エンジニアリング管理Jun 28, 20238 分 READ

CircleCI で機械学習モデル開発の 7 大課題を解決する

Jacob Schmitt

シニア テクニカル コンテンツ マーケティング マネージャー

一人の開発者が複雑な多目的ロボットマシンとそのホログラフィックプロジェクションを管理している図

人工知能 (AI) ブームが起こり研究が進む中、OpenAI の ChatGPT や Midjourney の生成 text-to-image モデルなどの機械学習 (ML) モデルにより、自然言語処理 (NLP) と画像処理の様相が根底から変わりました。この新しく強力なテクノロジーの登場で、ML モデルの開発とデプロイは一躍ソフトウェア開発の新たなフロンティアとなりました。

そして、ML が組み込まれたテクノロジースタックへの移行により、パフォーマンスとコスト効率に優れたソフトウェアを開発、デプロイするうえで新たな課題が生まれています。それは、コンピューティングリソースの管理、テストと監視、デプロイの自動化に関する課題です。

従来のテクノロジースタックにも同様の課題はありましたが、モダンなソフトウェア開発では継続的インテグレーションと継続的デプロイメント (CI/CD) を活用し、これらを解決してきました。ただし、CI/CD で ML ソリューションの複雑さに効果的に対処できますが、ML という新しい分野に対応するには、従来のアプローチを調整する必要があります。

ML モデル開発の課題とは

この記事では、ML モデルの開発とデプロイに関する 7 つの主要課題と、CI/CD を使ってそれらに対処する方法について説明します。また、ML ソリューションの構築と本番環境での運用に役立つ、CircleCI の包括的なプラットフォームもご紹介します。

  1. スケーラビリティとコンピューティングリソースの管理
  2. 再現性と環境の一貫性
  3. テストと検証
  4. セキュリティとコンプライアンス
  5. デプロイの自動化
  6. 監視とパフォーマンス分析
  7. 継続的トレーニング

課題 1: スケーラビリティとコンピューティングリソースの管理

ML 開発者が直面する大きな課題の 1 つは、大規模 ML モデルの構築とトレーニングを行うためのコンピューティング要件が非常に厳しいことです。実際、ChatGPT のような大規模言語モデル (LLM) をトレーニングするには、一般的に何十億もの入力単語が必要で、コンピューティングリソースには何百万ドルものコストがかかります

こうしたモデルのトレーニングと開発に必要な規模を踏まえ、アナリストからは、コンピューティング要件に対応する手段としてクラウドコンピューティングが挙げられています。しかし、Amazon Web Services (AWS) や Google Cloud Platform (GCP) など、一般的なクラウドサービスの GPU/CPU リソースを使って大規模なトレーニングタスクを処理すると、コストがかさみます。さらに、クラウドプロバイダーが提供している “無制限の” スケーリングサービスにより、リソース使用量と関連コストもどんどん増えてしまうおそれがあります。

CircleCI の機能なら、コストを監視し制御すると同時にスケーリングを行えます。CircleCI では、クラウドでのモデルのトレーニングに対応した複数レベルの GPU リソースクラスを、透明性の高い料金モデルで提供しています。また、セルフホストランナーを使うと、CI/CD ジョブをプライベートクラウドやオンプレミスで柔軟に実行できます。セルフホストランナーは汎用性が高く、スケーリングの自動化やジョブの同時実行も設定できます。

課題 2: 再現性と環境の一貫性

ML モデルのデプロイを管理するうえで重要な要素として、ビルド環境の一貫性と再現性も挙げられます。一貫性と再現性を確保することにより、CI/CD ジョブの再実行時やビルドプラットフォームの移行の際に、予期せぬエラーの発生を防止できます。ML モデル開発ではたいてい、実行時間が長く、中断しづらいジョブを実行します。そのため、ビルド時にエラーが起きると大きな損失となりますが、一貫性と再現性があればこうしたコストも回避できます。

一貫性は、コンテナ化を使ってデプロイジョブを周囲の環境から分離することで実現できます。一方、ビルドシステムの再現性は、デプロイにインフラストラクチャのコード化 (IaC) を使い、タスクの実行に必要な環境の詳細とリソースを明示的に定義することで高められます。この結果、プラットフォーム固有の設定に対するビルドの依存度が低下し、ビルドシステムの再現と監査が簡単になります。—

上記の理由から、CircleCI にはコンテナ化された CI/CD 環境を作るための Docker Executorコンテナランナーといったツールが用意されており、YAML ファイルベースでの IaC 構成にも対応しています。

課題 3: テストと検証

テストはあらゆるソフトウェアプロジェクトの開発で重要であり、ML を利用するプログラムの開発ではなおさらです。その複雑さとトレーニングの性質から、ML モデルの実装はユーザーに対して不透明な傾向があり、モデルの適切さを検査で判断するのはほとんど不可能です。そのため、ソフトウェアの動作を適切に保つために、包括的なテストが欠かせません。

CircleCI プラットフォームは、開発プロセスにテストを組み込む機能に優れています。テストの自動化をサポートしているため、コードを本番環境にデプロイする前に、動作が想定どおりかどうかを簡単に確認できます。CircleCI プラットフォームでは、数あるサードパーティ連携機能の 1 つであるOrb を利用し、テストをカスタマイズできます。また、SSH デバッグInsights ダッシュボードでテストを監視できます。

課題 4: セキュリティとコンプライアンス

開発チームは、ソフトウェアが安全であり、消費者保護に関する諸法律を順守したものであることを徹底しなければなりません。これは、ML 開発では特に重要です。なぜなら、多くの ML 開発では、トレーニングで大量のユーザーデータを処理するからです。データパイプラインに脆弱性が存在したり、データのサニタイズに失敗したりすると、機密性の高いユーザー情報が攻撃者に利用されてしまうおそれがあります。そのため、ML モデル開発とデプロイの全段階で、セキュリティは最大の考慮事項です。

CircleCI には、アプリケーションのセキュリティとコンプライアンスを強化する CI/CD 機能が複数備わっています。ロールベースの認証情報システムと OpenID Connect (OIDC) 認証トークンを使用すると、パイプラインへのアクセスを制御し、各ステップへのユーザーアクセスを詳細に管理することができます。また、CircleCI では、重要なセキュリティイベントが監査ログに記録、保存されます。このログをイベント後に参照し、システムのセキュリティの改善状況を把握できます。

課題 5: デプロイの自動化

新しいバージョンの ML モデルの開発は急速に進むものであり、AI への関心が高まっている時期にはこの傾向が顕著です。そのため、開発環境や本番環境に複数のバージョンが存在する状態で、ML システムの頻繁な更新を管理するのは困難です。ユーザーエクスペリエンスの一貫性を保つために、簡単に新しい更新を本番環境にプッシュし、現在使用中のバージョンを特定できる方法が欠かせません。

そこで便利なのが、CircleCI Orb です。これを使うと、AWS や GCP など対象のプラットフォームにコードを継続的かつ自動的にデプロイできます。さらに、これらのデプロイは IaC で構成可能なので、プロセスの透明性と再現性も確保できます。また、デプロイパイプラインの任意の地点に手動での承認を求めるゲートを追加すれば、プロセスの実行に問題がないか確認することもできます。

課題 6: 監視とパフォーマンス分析

ML モデルのデプロイ後は、本番環境の監視およびパフォーマンス分析用のソフトウェアをセットアップしなくてはなりません。LLM などの最近の ML モデルはサイズが大きく、複雑なので、包括的なテストスイートでも十分に検証できない場合があります。モデルが想定どおりに動作しているかを確認する唯一の方法は、本番環境からメトリクスを収集、集約して、実際のパフォーマンスを観察することです。

CircleCI プラットフォームを使うと、監視をデプロイ後のプロセスに簡単に組み込むことができます。CircleCI Orb を活用して、Datadog、New Relic、Splunk などの監視ツールやデータ分析ツールを CI/CD パイプラインと連携させられます。こうした連携を用意すれば、本番段階の ML モデルのパフォーマンスと動作に関するメトリクスをキャプチャして分析できます。

課題 7: 継続的トレーニング

AI への投資と拡張が活発に行われている間は、新しい研究、データセット、改良版のモデルが毎日のように登場します。そのため、本番用の ML モデルは、新機能の組み込みや新しいデータの学習に対応していなくてはなりません。

前に説明したように、CircleCI はサードパーティの CI/CD 監視プラットフォームをサポートしているため、CircleCI 内で新機能の追加や監視を行えます。ただし、新しいトレーニングデータは継続的に生成されます。定期的にモデルにデータをフィードするために、パイプラインのスケジュール実行を使用するとよいでしょう。この機能を使うと、追加のトレーニングパイプラインとデプロイパイプラインをトリガーするイベントをスケジュールできます。これにより、本番 ML モデルを継続的に成長させ、更新することができます。

まとめ

ML モデルの開発プロセスには、エンジニアリングチームがこれまで直面したことのない課題が存在します。開発中は、コンピューティングリソースの管理、ビルド環境の一貫性の実現、自動テストの統合、自動化とセキュリティの確保など、複雑なタスクをいくつもこなさなくてはなりません。また、モデルをデプロイした後には、監視やパフォーマンス分析を追加し、トレーニングデータを継続的に統合して、モデルを想定どおりに動作させ、時間とともに成長させる必要もあります。

CI/CD パイプラインを使用すると、開発プロセスやデプロイプロセスの各段階におけるこのような課題に対処し、ML モデルの速度、安全性、信頼性を高められます。

CI/CD を利用して ML 開発の課題を解決するには、CircleCI が役立ちます。ぜひ、無料アカウントを作成してお試しください。また、CI/CD を開発構想に組み込む方法については、CircleCI にご相談ください

クリップボードにコピー