なぜ機械学習展開プラットフォームを Python ではなく Go で作成したのでしょうか?

なぜ機械学習展開プラットフォームを Python ではなく Go で作成したのでしょうか?

Python は機械学習の分野で広く使われるようになりました。しかし、Python は、全能の神が望むことを何でもできる魔法の杖ではありません。多くの場合、Python は Go などの他の言語ほど効果的ではなく、それよりも悪い場合もあります。この記事では、著者の作業環境で Python ではなく Go が選ばれた理由について説明し、コミュニティの注目を集め、白熱した議論を巻き起こしました。

プログラミング言語は独自の世界であり、その支配者の地位を狙う人々が常に存在します。

Python は現在、特に機械学習の分野で主要なプログラミング言語として確固たる地位を築いています。主流の機械学習フレームワークはすべて Python を使用しています。

しかし、多くの人に認知されている Python も、実は万能というわけではありません。無力な状況もあり、何もないところから何かを生み出すこともあります。

Python が誇る機械学習アルゴリズムは、機械学習システムのコンポーネントの 1 つにすぎません。実際に大規模な本番環境の機械学習 API を実行するには、次の機能を実装するインフラストラクチャも必要です。

自動スケーリングにより、トラフィックの変動によって API が中断されることがなくなります。API 管理により、API デプロイメントのローリング アップデートを処理し、ユーザーにサービスを提供しながらモデルを更新できます。

Cortex のようなオープンソースの機械学習導入プラットフォームは、このインフラストラクチャ全体と、ロギングやコストの最適化などのその他の懸念事項を自動化することを目指していますが、著者の Caleb Kaiser 氏は、Go が Python よりも適していると考えています。

貧しい家庭出身で、クリスマスの日に新卒者によって作られた Python と比較すると、Go 言語は Google が生み出したもので、その作者は Rob Pike、Ken Thompson、Robert Griesemer という 3 人の巨匠です。以下の点で Python を上回っています。

同時実行性は機械学習のインフラストラクチャにとって重要

ユーザーは、さまざまなモデルをさまざまな API としてデプロイでき、すべて同じ Cortex クラスターで管理されます。

Cortex Operator がこれらのさまざまなデプロイメントを管理できるようにするには、いくつかの異なる API を扱う必要があります。

CortexはKubernetes APIを呼び出してモデルをクラスターにデプロイします。さまざまなAWS API(EC2 Auto Scaling、S3、CloudWatchなど)も考慮する必要があります。

ユーザーはこれらの API と直接対話することはありません。代わりに、Cortex はこれらの API をプログラムで呼び出して、クラスターをプロビジョニングし、デプロイメントを開始し、API を監視します。

これらすべての重複する API 呼び出しを効率的かつ信頼性の高い方法で行うのは困難です。

これらを同時に処理するのが最も効率的な方法ですが、競合状態などを気にする必要が生じるため、複雑さも増します。Go には、この問題に対するエレガントですぐに使えるソリューション、Goroutines があります。

Goroutine は、並行して実行される通常の Go 関数です。 1 つの OS スレッドに多数の Goroutine を配置することができ、Goroutine が OS スレッドをブロックすると、Go ランタイムは残りの Goroutine を新しい OS スレッドに自動的に移動します。

Goroutine は「チャネル」と呼ばれる機能も提供しており、これにより Goroutine が相互にメッセージを渡すことができるため、リクエストをスケジュールして競合状態を回避できます。

asyncio などの最新のツールを使用して、これらすべてを Python で実装することは可能かもしれませんが、Go がこのユースケースを念頭に置いて設計されているという事実により、私たちの作業ははるかに簡単になります。

GoでクロスプラットフォームCLIを構築するのは簡単です

Cortex CLI は、ユーザーがコマンドラインから直接モデルをデプロイし、API を管理できるようにするクロスプラットフォーム ツールです。

以下の GIF は使用中の CLI を示しています。

Python で書かれた CLI をさまざまなプラットフォーム間で配布するのは難しすぎることがわかりました。

Go は単一のバイナリにコンパイルされるため (依存関係の管理は不要)、エンジニアリングの労力をかけずにプラットフォーム間で CLI を配布するための簡単なソリューションを提供します。コンパイルされた Go バイナリとインタープリタ言語のパフォーマンス上の利点も明らかです。

コンピュータのベンチマークゲームによると、Go は Python よりもはるかに高速に実行されます。他の多くのインフラストラクチャ CLI ツールが Go で書かれているのは偶然ではありません。これが次のステップにつながります。

Goエコシステムはインフラプロジェクトに最適

オープンソースの利点の 1 つは、尊敬するプロジェクトから学ぶことができることです。 たとえば、Cortex は Kubernetes (それ自体が Go で記述されています) エコシステム内に存在します。 私たちは、このエコシステム内の多くの素晴らしいオープンソース プロジェクトから学ぶことができて幸運でした。その中には次のようなものがあります。

  • kubectl: Kubernetes 用の CLI
  • minikube: Kubernetesをローカルで実行するためのツール
  • helm: Kubernetes パッケージ マネージャー
  • kops: 本番環境のKubernetesを管理するためのツール
  • eksctl: Amazon EKS の公式 CLI

Kubernetes プロジェクトだけでなく、上記のすべてが Go で書かれています。

CockroachDB や、Vault、Nomad、Terraform、Consul、Packer などの Hashicorp のインフラストラクチャ プロジェクトは、すべて Go で書かれています。

インフラストラクチャ分野での Go の人気のもう一つの効果は、ほとんどのエンジニアが興味を持っていることです。インフラに携わる人々は Go に精通しているため、エンジニアを引き付けやすくなります。

Goは使うのが楽しい

Python と比較すると、Go は始めるのが少し大変ですが、これは一時的なものです。一度敷居を越えて囲碁の世界に入ってみれば、それがまさに「順風満帆」であることに気づくでしょう。

Go の寛容な性質は、大規模なプロジェクトに非常に適している理由です。

さらに、Python と比較した場合、Go の利点は次の点にも反映されています。

  • あなたが犯す愚かな間違いをすべてキャッチする本当に優れたコンパイラを用意する
  • より優れた並列処理。 Go言語は並列処理のために生まれた
  • シンプルな展開。コードに必要なすべての依存関係は1つのバイナリファイルにあります
  • 一貫したスタイル。フォーマットツールはすべてのコードスタイルの一貫性を保つ
  • さらに便利なツール。エディタ+プラグインでほぼすべてのニーズに対応、IDEは不要

機械学習にはPython、インフラにはGo

Cortex は TensorFlow、PyTorch、scikit-learn、およびその他の Python モデルを提供します。つまり、これらのモデルとのインターフェイス、および推論前後の処理は Python で実行されます。

ただし、Python コードが Docker コンテナにパッケージ化されているとしても、これらのコンテナは Go 言語で記述されたコードでオーケストレーションされます。機械学習エンジニアになりたい場合は、Python を知っておくことが必須です。

ただし、機械学習インフラストラクチャでの作業に興味がある場合は、Go の使用を真剣に検討する必要があります。

<<:  3行のコードでモデルのトレーニングを高速化: このアルゴリズムにより、GPUの古い木に新しい花が咲きます

>>:  フォトライブラリには30億枚の画像があり、たった1枚の写真で個人情報を確認できます。顔認識が再びプライバシー論争を巻き起こす

ブログ    
ブログ    
ブログ    

推薦する

アルゴリズムの問​​題を解決するための Python 3 コード フレームワーク

序文現在インターンシップをしており、仕事量はそれほど多くないので、空き時間を利用してPATのウェブサ...

覚えておいてください!私たちの未来に影響を与えるのはビッグデータや人工知能ではなくブロックチェーンです!

[[216863]]私たちの未来に影響を与えるそれは「ビッグデータ」でも「モノのインターネット」で...

百新銀行と百度クラウドAI+銀行金融技術シンクタンク会議が開催、オープンバンキングについて議論

11月19日、北京で「百度銀行&百度クラウドAI+銀行金融技術シンクタンク」が開催されました。カンフ...

ChatGPTのウェブサイトのトラフィックは3か月連続で減少しており、8月の訪問数は3.2%減の14億3000万回となった。

分析会社シミラーウェブが9月8日に発表した最新データによると、人工知能チャットロボット「ChatGP...

3分で振り返る!2021年9月のロボット分野の重要な動向を概観

2021年9月に北京で開催された世界ロボットコンテストでは、さまざまな企業がロボット技術の研究開発に...

...

GPT-4V でさえ解明できない未来推論の解決策があります!華中科技大学と上海理工大学出身

マルチモーダル大規模言語モデルは、強力な画像理解および推論機能を発揮します。しかし、現在の観察に基づ...

インテルCEOがNVIDIAを非難:CUDA技術は時代遅れであり、業界全体がそれを終わらせたいと考えている

数日前、Intelは生成AI用のAIチップGaudi3を含む一連の新しいCPUを発売しました。計画に...

新浪微博廖博:WAICリアルタイムストリームコンピューティングプラットフォームの成長と発展

[51CTO.com からのオリジナル記事] 7 年間の努力と見事な変貌。 2012年以降、6年連続...

人工知能は、電力網とユビキタス電力のIoTの構築と開発にとって重要な方向性となるだろう

[[285204]]現在、モバイルインターネット、ビッグデータ、スーパーコンピューティングなどの新し...

Appleの会話型AI予算は1日あたり数百万ドルに拡大

海外メディアは9月7日、事情に詳しい関係者の話として、アップルが人工知能の構築に必要なコンピューティ...

UNITのハイライト - 対話システムの技術的原理を素早く習得

[[254684]]人工知能時代の対話的特徴は、「対話」という一言に集約されます。音声であれテキスト...

...