機械学習インフラストラクチャを Python ではなく Go で記述する理由は何ですか?

機械学習インフラストラクチャを Python ではなく Go で記述する理由は何ですか?

[[314943]]

Python が機械学習プロジェクトで人気のある言語であることは間違いありません。

R、C++、Julia などの言語にはそれぞれ独自のニッチとユースケースがあり、それによって長く使われていますが、Python は依然として最も広く使用されている言語であり、すべての主要な機械学習フレームワークで使用されています。

しかし、想像できますか? Cortex (機械学習モデルを API として展開するためのオープンソース プラットフォームの 1 つ) のコード ベースでは、コードの 87.5% が GO で書かれています。

画像ソース: Cortex GitHub

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

  • トラフィックの変動が API に支障をきたさないように自動スケーリングします
  • API同期の展開を処理するためのAPI管理を実装する
  • ローリングアップデートにより、モデルの更新によってユーザーサービスが中断されることがなくなります。

Cortex は、上記のインフラストラクチャのすべてに加えて、ログ記録やコストの最適化などのその他の懸念事項も自動化することを目指しています。

Go は、次の理由から、上記の要件を満たすソフトウェアを構築するのに理想的な選択肢です。

1. Goエコシステムはインフラプロジェクトに適している

[[314944]]

出典: zcool

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

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

上記のツールはすべて Kubernetes プロジェクトだけではなく、Go で書かれています。 CockroachDB や Hashicorp のインフラストラクチャ プロジェクト (Vault、Nomad、Terraform、Consul、Packer など) を見ると、すべて Go で書かれていることがわかります。

インフラストラクチャ分野での Go の人気によるもう 1 つの影響は、インフラストラクチャに関心のあるエンジニアのほとんどが Go 言語に精通していることです。したがって、GO を通じてこれらのエンジニアを引き付けるのは簡単です。実際、Cortex Labs の優秀なエンジニアの 1 人が、AngelList で Go 関連の求人を検索して私たちを見つけました。彼が私たちを見つけてくれたことはとても幸運だと思っています。

2. 機械学習のインフラストラクチャでは同時実行性が重要

ユーザーは、さまざまなモデルをさまざまな API として展開し、すべてのモデルを同じ Cortex クラスターで管理できます。 Cortex Operator は、これらのさまざまなデプロイメントを管理するためにいくつかの API も使用する必要があります。例:

  • Cortex は Kubernetes API を呼び出して、クラスターにモデルをデプロイします。
  • Cortex は、さまざまな AWS API (EC2 Auto Scaling、S3、CloudWatch など) を呼び出して、AWS 上のデプロイメントを管理します。

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

効率的かつ信頼性の高い方法で API を相互に呼び出すことは大きな課題です。 API を並行して使用するのが、最もパフォーマンスの高いアプローチですが、競合状態などを心配する必要があるため、問題も発生します。

Go はこの問題に対する簡単な解決策を提供します: Goroutines。

Goroutine は、並行してコードを実行する Go の通常の関数です。 Goroutine が舞台裏でどのように動作するかを詳しく説明するには、別の長い記事を書く必要がありますが、簡単に言うと、Goroutine は Go ランタイムによって自動的に管理される軽量スレッドです。複数の Goroutine を 1 つの OS スレッドに配置できます。Goroutine が OS スレッドをブロックすると、Go ランタイムは残りの Goroutine を新しい OS スレッドに自動的に移動します。

Goroutine は、ユーザーが Goroutine 間でメッセージを渡すことを可能にする「チャネル」と呼ばれる機能も提供し、ユーザーがリクエストをスケジュールし、競合状態を防ぐのに役立ちます。

もちろん、ユーザーは asyncio などの最新ツールを使用して Python でこれらの機能を実装することもできますが、Go はこれらの状況を念頭に置いて設計されており、GO を使用すると仕事や生活の負担を軽減できます。

3. Goでのプログラミングは楽しい

[[314945]]

出典: Pexels

Cortex の構築に Go を使用した最後の理由は、Go 言語が非常に優れているからです。

Python と比較すると、Go を使い始めるのは少し大変です。ただし、Go の包括性により、大規模なプロジェクトでも快適に使用できます。私たちは依然としてソフトウェアを厳密にテストしていますが、静的型付けとコンパイル(Go 初心者にとって大きな悩みの種)がガードレールとして機能し、(比較的)バグのないコードを書くのに役立ちます。

他の言語には特定の利点があると主張することもできますが、全体的には、Go が私たちの技術的および美的ニーズを最もよく満たしています。

4. Goを使用するとクロスプラットフォームCLIの構築が簡単になります

Cortex CLI は、ユーザーがコマンドラインから直接モデルをデプロイし、API を管理できるようにするクロスプラットフォーム ツールです。次のアニメーションは、CLI の動作を示しています。

画像ソース: Cortex GitHub

当初、CLI は Python で作成しましたが、プラットフォーム間で CLI を配布するのは非常に困難であることが判明しました。 Go はバイナリをコンパイルできるため (依存関係の管理なし)、追加のエンジニアリング作業を行わずにプラットフォーム間で CLI を配布するための便利で簡単なソリューションを提供します。

Go のコンパイルされたバイナリ コードは、インタープリタ型言語に比べて明らかにパフォーマンス上の利点があります。コンピュータのベンチマークによると、GO は Python よりもはるかに高速です。

他の多くのインフラストラクチャ CLI ツールも Go で書かれているのはおそらく偶然ではありません。

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

私たちはまた、特に推論の処理において Cortex で強力な存在感を発揮する Python も気に入っています。

Cortex は TensorFlow、PyTorch、scikit-learn、およびその他の Python モデルを提供します。つまり、モデルとのインターフェイス、事前推論、および事後推論の処理はすべて Python で実行されます。しかし、Python コードがパッケージ化されて Docker コンテナにデプロイされているとしても、それらのコンテナは Go で記述されたコードによってオーケストレーションされます。

出典: Pexels

機械学習エンジニアになりたい場合は、Python に精通していることが必須です。ただし、機械学習インフラストラクチャでの作業に興味がある場合は、Go を真剣に検討することで間違いなく多くのメリットが得られます。

<<:  Alipayの顔認識が「クラック」されましたが、私たちのお金はもう安全ではないのでしょうか?

>>:  AI とブロックチェーンは 2020 年にモバイル アプリ業界にどのような革命を起こすのでしょうか?

ブログ    

推薦する

...

21 歳の SpaceX インターンが AI を使って大規模な考古学的事件を解決し、4 万ドルを獲得しました。

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

AIをやりたいなら高校でデータサイエンスを勉強するな:ウルトラマンとマスクがついに合意

AIの発展には基礎教育を強化しなければ手遅れになります。大規模モデル技術が急速に発展し、企業間の競争...

オープンソースの人工知能ソフトウェア 15 種類、あなたのお気に入りはどれですか?

人工知能は現在最も注目されている科学研究分野の一つです。 IBM、Google、Microsoft、...

ワンジ自動車ミリ波レーダーポイントクラウド技術の分析

レーダー点群のセマンティックセグメンテーションは、レーダーデータ処理における新たな課題です。このタス...

制御可能な人工知能には未来がある

8月29日、2019年世界人工知能会議が上海で開幕した。世界各国の著名なテクノロジー企業や学界、産業...

ディープラーニングモデルの圧縮と加速モデル推論

導入機械学習モデルを本番環境にデプロイする場合、モデルのプロトタイプ作成フェーズでは考慮されていなか...

マイクロソフトがローブを買収:一般の人々が人工知能を簡単に利用できるように

マイクロソフトは、人工知能はテクノロジー大手が反体制派を排除するための武器として利用されるべきではな...

機械学習モデルは株式市場を正確に予測できるのでしょうか?

[51CTO.com クイック翻訳] 人工知能は今や魔法の技術と見なされています。人類が直面してい...

汎用人工知能の実現に私たちはどれくらい近づいているのでしょうか?

今日、人工知能は人間が行う作業の一部をより良く行うために懸命に取り組んでいます。たとえば、AI は人...

Llama 2 の中国語版はオープンソースであり、言語モデルとマルチモーダルモデルの両方を備えているため、完全に商用利用可能です。

7月19日、Metaはついに無料の商用版Llama 2をリリースし、オープンソースの大規模モデルの...

ボストン・ダイナミクスがマスク氏を激しく批判、それは単なる自慢なのか、それとも現実なのか?テスラロボットに関する3つの大きな推測

テスラのロボットに関しては、まず主要なタイムラインを確認しましょう。実際、テスラのロボットの構想は1...

Microsoft PowerPoint は 11 月に Copilot を統合します: 数秒でプレゼンテーションを生成

10月13日、Microsoft 365 ロードマップによると、OneNote、Word、OneDr...

...

神経系とビッグデータ、新しい次元削減アルゴリズムが脳をシンプルにする

ネイチャー・ニューロサイエンス誌に掲載されたレビュー記事で、カーネギーメロン大学のバイロン・M・ユー...