この記事はUMITRON Advent Calendar 2025 2日目の記事です
はじめに
こんにちは、UMITRONの細野です。
私は日々の業務で画像処理技術を活用した機能を中心に開発しています。
機械学習ベースのアルゴリズムの採用が増えるにつれて、モデルを継続的に更新する機会も増えてきました。
そんな中、モデルの更新をスムーズに行うために、最近はMLOpsを意識したパイプライン構築を心がけています。
昨年は、SageMaker Notebookを活用したMLパイプライン開発について学んだメモを公開しましたが、この1年でAIにより開発環境が劇的に変化しました。
その結果、当初の計画とは少し異なるアプローチで開発を進めることになりました。
そこで今回は、AIコーディングツールを活用した、現在の私のMLパイプライン開発スタイルと、その中で得たノウハウを紹介します。
現在のMLパイプラインの構成
まず、現在私が開発しているパイプラインの構成を簡単に紹介します。
現状は、Googleの定義するMLOpsのレベル0を少し拡張した程度の完成度ではありますが、モデルの学習・デプロイを中心にmodel development process as codeを心がけています。
以下は大まかな構成図です。
(ちなみに、この図は実際のコードを元にして、CodexにPlantUMLコードを出力させることで作成しました。)
アルゴリズムによって差異はありますが、このようにAmazon SageMaker AIを中心とした構成になっています。
主な作業フローは以下のとおりです。
- データ準備: アノテータがS3にアップロードされた画像を元にアノテーションを行い、学習データセットを作成します
-
学習・モデル作成: エンジニアが
SageMaker Pipelineを起動し、SageMaker Trainingジョブを実行します。学習が完了すると、SageMaker Modelが作成されます。この時、学習用/推論用のコンテナイメージは事前にECRへプッシュされています -
デプロイ: エンジニアが作成されたモデルをテスト用の
SageMaker Endpointにデプロイし、評価を行います。問題がなければ、本番環境のSageMaker Endpointへデプロイします
(アノテータとエンジニアにそれぞれ複数人いそうなアイコンですが、どちらも私一人です…)
SageMaker Pipelineにevaluationとdeployが含まれていないのは、デグレの要因特定や、その解消の確認などの手順が状況によって変化することがあり、完全自動には至っていないためです。
もし評価とデプロイもSageMaker Pipelineに組み込むことができれば、MLOpsレベル1(CI/CDの自動化)に大きく近づくと考えています。
また、図中に示されていませんが、開発の迅速化のため、SageMaker TrainingやSageMaker Endpointの機能をモックするローカルテスト環境も必要に応じて構築しています。
開発環境:ローカル + AIコーディングへのシフト
ここからは開発環境についてです。
現在の開発環境は、ローカルIDE(Cursor)とAIコーディングツール(Codex)の組み合わせに完全に移行しました。
当初検討していたSageMaker Notebookを利用する場合と、ローカル環境でAIコーディングを行う場合のメリット・デメリットを比較します。
| 特徴 | SageMaker Notebook | ローカル + AIコーディング |
|---|---|---|
| 可視性 | ◯ (実行結果の確認及び共有が容易) |
◯ (Notebook+αの作業が必要だがAIで省コスト化可能) |
| GPU利用 | ◯ (インスタンス切り替えのみ) |
△ (環境構築が必要) |
| テスト容易性 | ◯ (インスタンス上でのコンテナコード実行) |
◯ (モック環境構築が必要だがAIで省コスト化可能) |
| 権限設定 | ◯ (実行ロールの継承と簡素化) |
△ (認証情報の管理が必要) |
| コーディングヘルプ | △ (エディタ補完等) |
◎ (AIが自走) |
ローカル + AIコーディング採用の決め手
現在のAIコーディングツールは、単なるコード補完を超え、エラーメッセージや既存コード、ディレクトリ構造から文脈を理解し、必要な修正や新規コードを次々と提案してくれる「自走」能力を持っています。
この「自走させられる」メリットが開発スピードに与える影響は非常に大きく、権限設定やGPU環境構築の手間を差し引いてもなお、ローカル環境を中心とする判断に至っています。
また、SageMaker Notebookインスタンス上でAIコーディングツールを走らせるという選択肢もありますが、ローカルIDEと比べた際の開発環境のカスタマイズのしやすさや、インスタンスの常時稼働に伴うコスト効率の観点から、現在のところ主流の環境に切り替えるほどのメリットはないと考えています。
AIコーディング環境で得た開発Tips
AIツールを活用した開発環境で、これまでに気づいた注意点やノウハウを共有します。
AIツールの進化によって日々変化していくと思われますが、現段階でのTipsです。
1. ローカルモック環境のコンテナ仕様は詳細にプロンプトに記載する
ローカルのモック環境を作る際、AIは汎用的なAPIの仕様の再現は得意ですが、コンテナ特有の仕様(例:マウントパス)を適切に再現するのはやや苦手な印象があります。
例えば、「学習ジョブにおいて、コンテナ内の /opt/ml/output がホスト側のS3にアップロードされる」といった、AWSやコンテナの詳細な挙動仕様は、プロンプトなどで明確に教える必要があります。
2. 頑健すぎる「汎用フォールバック」コードを避ける
AIはエラーを避けようとして、汎用的なフォールバックを生成しがちですが、MLパイプラインのコードにおいてはこれが逆効果になることがあります。
例えば、データセットが指定されていない場合にデフォルトのデータセットで学習を開始する、といった処理は、エラーやミスに気づきづらくします。
学習やデプロイといった重要な操作は、異常が発生した際に明確にエラーを出すシンプルなコードを指示するように注意しています。
3. 画像を見てのエラー判断はAIに任せない
AIコーディングの強みの一つは、エラーを自己修正してくれる点ですが、出力画像をチェックしないとエラーが解消したかわからないケースには限界があります。
例えば、「検出結果の矩形が画像に正しく表示されないバグ」を指摘した場合、AIはしばしば「修正し、画像を確認した結果、正しく矩形が出力されていました!」と誤った成功報告をすることがあります。
視覚的な判断をAIコーディングツールに頼るのはまだ難しいと考え、以下の対応を心がけています。
- テキストログの強化: 画像チェックが不要になるよう、矩形の座標やクラスIDが適切かといった、テキスト情報で分かるログを吐き出すようAIに指示する
- 適切なテストケースの生成: 画像描画結果を検証するための適切なユニットテストを作らせる
(余談)技術検証フェーズの変化
MLパイプライン構築の前段階である、アルゴリズムの技術検証フェーズのやり方も大きく変わったと感じています。
データ分析・可視化の高速化
簡単なデータ分析であれば、「このデータに対して、外れ値を確認して可視化して」といった漠然とした指示を出すだけで、AIが分析から可視化まで一連の処理を勝手に行ってくれます。
また、これまでは、自分用のワンタイムスクリプトでも備忘録を残すようにしていましたが、最近ではそれらの作業もAIに任せています。
ドキュメントがなくても、AIにコードを読ませれば正しく理解してくれるため、自分だけが作業する検証フェーズではこうした整備作業が不要になり、結果として技術検証のスピードが大きく向上しました。
コモディティ技術の採用加速
ドキュメントが整備されていたり、Web上に知見がたくさんある既存のコモディティ技術を使う際、AIの出力精度が格段に高くなります。
人間がコーディングする場合ももちろんそうなのですが、AIのサポートを手厚く受けられることによる作業効率化はそれを遥かに凌ぐと実感しています。
例えば、コモディティ化された手法であれば、「手法A〜Dを比較して」と雑に指示を投げることができ、気軽にバックグラウンドで検証を進めさせることができます。
まとめ
AIコーディングツールの台頭により、MLパイプライン開発の効率は確かに向上しました。
この恩恵を最大限に受けるためには、AIと人間の役割をどう切り分けるかが重要になっていると考えています。
例えば、私個人の開発においては、コード開発の速度が上がった分、学習データやアノテーションの質・量の確保といったデータ準備の工程が、相対的に大きなボトルネックとして残っています。
今後は、これらの非効率な部分を解消したり、AI任せにしづらい全体のアーキテクチャ設計に注力していくことが、さらなる開発効率化の鍵になると感じています。
この記事が、現在のAIを活用したMLOps開発の現場感をお伝えする一助となれば幸いです。
ウミトロンは、「持続可能な水産養殖を地球に実装する」というミッション実現に向けて、日々プロダクト開発・展開にチーム一丸となって邁進しています。
ウミトロンのニュースや活動状況を各種SNSで配信していますので、ぜひチェックいただき、来年も応援よろしくお願いします!
Facebook https://www.facebook.com/umitronaqtech/
X https://x.com/umitron
Instagram https://www.instagram.com/umitron.aqtech/
Linkedin https://www.linkedin.com/company/umitron
