継続的インテグレーション(CI)は、最新のソフトウェア開発における基本的なプラクティスであり、人工知能(AI)や機械学習(ML)の分野でますます重要になっている。CIでは、複数の貢献者によるコード変更を中央のリポジトリに頻繁にマージし、自動ビルドとテストを実行する。CIの主な目的は、統合の問題を早期に検出し、コード品質を向上させ、開発ワークフローを合理化することである。この自動化と迅速なフィードバックループは、トレーニングやデプロイを含むような複雑なプロジェクトに特に有益である。 Ultralytics YOLOモデルのような複雑なプロジェクトには特に有益です。
なぜAI/MLでは継続的インテグレーションが重要なのか?
データ、モデル、パラメータ(ハイパーパラメータのチューニングや データの増強など)の実験を伴うAI/ML開発の反復的な性質は、CIを特に価値のあるものにしている。CIを統合することで、変更に対する迅速なフィードバックが得られ、新しいコードが既存のコードベースと正しく統合され、モデルのパフォーマンスが予期せず低下しないことが保証される。主な利点は以下の通りである:
- バグの早期発見:自動化されたテストは、コード変更がマージされた後にエラーを迅速に検出し、後で修正するコストと労力を削減します。
- コード品質の向上:一貫したテストと統合は、より良いコーディングプラクティスと保守可能なコードベースを促進する。リンターや静的アナライザーのようなツールは、CIパイプラインの一部であることが多い。
- 開発サイクルの短縮:自動化によって手作業によるテスト作業が軽減され、開発者は機能構築に専念できます。
- 一貫したモデルパフォーマンス:CIパイプラインには、モデルの精度、正確さ、リコール、およびその他の関連するメトリクスを評価するステップを含めることができ、回帰を防ぐことができます。これは多くの場合、F1スコアや 平均平均精度(mAP)のようなメトリクスをチェックすることを含みます。
- コラボレーションの強化:頻繁な統合により、マージ時のコンフリクトを最小限に抑え、チームは常に最新のコードベースで作業できます。
AI/MLプロジェクトにおけるCIの仕組み
CIを使った典型的なAI/MLプロジェクトでは、開発者がコードの変更(モデルスクリプト、設定ファイル、あるいは新しいデータ処理ステップを含む)をGitのような共有バージョン管理システムにコミットするところからプロセスが始まることが多い。このコミットは、Jenkins、GitLab CI/CD、GitHub Actionsのようなプラットフォームによって管理されるCIパイプラインを自動的にトリガーする。パイプラインは通常、いくつかのステップを実行する:
- ビルド:コードをコンパイルし、必要な成果物(Dockerイメージなど)をビルドする。
- ユニットテスト:個々のコードコンポーネントに対して、小規模で分離されたテストを実行する。
- 統合テスト:システムの異なる部分間の相互作用をテストする。
- モデルの検証:データの整合性のチェック、モデルアーキテクチャの検証、小規模なテストデータセットでの推論の実行など、MLモデルに固有のテストを実行します。
- 性能テスト:モデルのパフォーマンス・メトリクス(mAP、精度、レイテンシ)を、事前に定義されたベンチマークや以前のバージョンに対して評価する。これにはベンチマーク・モードが含まれる。
- レポーティング:ビルドとテストの結果をチームに通知し、多くの場合Slackのようなコミュニケーションツールと統合する。
Ultralytics CIを多用しています。Ultralytics CIガイドで私たちのプロセスについて詳しく知ることができます。
AI/MLにおける継続的インテグレーションの実世界での応用
継続的インテグレーションは、効率性と信頼性を高めるために、現実世界のさまざまなAI/MLアプリケーションで使用されている。
- 物体検知システムの開発: 物体検出システムを開発する企業。 Ultralytics YOLO11を使用してオブジェクト検出システムを開発している企業は、新しいコード変更を自動的にテストするためにCIを使用するかもしれない。各コミットは、(COCO128のような)データのサブセット上でモデルを再トレーニングまたは検証し、mAPと推論速度をチェックするために評価を実行し、マージする前に変更がパフォーマンスに悪影響を与えないことを確認するパイプラインをトリガーすることができる。これは、自動車AIや セキュリティのアプリケーションのモデル品質を維持するのに役立ちます。
- 自然言語処理(NLP)モデルの洗練: 自然言語処理(NLP)技術を使ったセンチメント分析モデルに取り組んでいるチームは、CIを導入することができる。コードを更新するたびに(例えば、特徴抽出やモデルアーキテクチャを微調整する)、自動的にテストがトリガーされます。これらのテストは、更新されたモデルを検証データセット上で実行し、センチメント分類の精度と F1スコアをベースライン結果と比較する。これにより、モデルの有効性が継続的に監視され、改善されます。
継続的インテグレーションと継続的デリバリー/デプロイメント(CD)の比較
CIは密接に関連しているが、継続的デリバリーや継続的デプロイメント(CD)とは異なる。
- 継続的インテグレーション(CI):コードの変更を頻繁に統合し、自動的にテストすることに重点を置く。出力は、次のステップに進むための検証済みのビルドである。
- 継続的デリバリー(CD):ステージング環境または本番環境へのリリースに向けて、検証済みのコード変更を自動的に準備することでCIを拡張する。本番環境へのデプロイは通常手動で行われます。この違いについては、アトラシアンのガイドを参照してください。
- 継続的デプロイメント(CD):検証されたすべての変更を、手作業なしで本番環境に直接デプロイします。
CIとCDのプラクティスは、開発からデプロイメント、モニタリングに至るまで、機械学習のライフサイクル全体を効率化することを目的としたMachine Learning Operations(MLOps)の中核的なコンポーネントである。Ultralytics HUBのようなプラットフォームは、モデルのトレーニングやデプロイメントなど、このライフサイクルの一部を管理するのに役立つ。