Impact-Site-Verification: 578d421e-1081-463d-918b-ec5e29c5b9db
<戻る

独自日本語SLM MLOpsパイプライン開発

グローバルコンサルティングファーム | 社内プロジェクト

概要

NVIDIA AI Blueprints の Data Flywheel(`NVIDIA-AI-Blueprints/data-flywheel`)を fork し,日本語SLM向けに拡張した自律学習型MLOps基盤をエンドツーエンドで設計・構築.本番環境のプロンプト/レスポンスログを起点に,評価データ自動生成→LoRAファインチューニング→LLM-as-judge評価→モデル昇格までのループを NeMo Microservices 上で自動化し,NVIDIA公式ベンチマークで最大98.6%の推論コスト削減を再現した.

アーキテクチャ

FastAPI REST APIがジョブを受け,Celery + RedisでバックグラウンドタスクをMongoDB(メタデータ)とElasticsearch(ログ・推論結果)に書き出す非同期構成.NeMo Deployment Managerを介してNIMsを動的に起動・停止することで,ファインチューニング・評価中のみGPUを占有する料金効率を実現した.

オーケストレーションはKubernetes + Helm.Celery Parent/Workerのデプロイメントをfork元から調整し,障害復旧とスケーラビリティを改善.長時間ジョブは`FlywheelCancelledError`で安全にキャンセルでき,途中まで進んだ成果物も保持される.MLflowで実験メトリクスを,FlowerでCeleryタスクの可視化を別経路で確保している.

  1. Base: 本番プロンプトをそのまま再生して基準値を取得
  2. ICL(In-Context Learning): トラフィックからfew-shot例を選択(均等分布 / 意味的類似度の2モード)
  3. Customized: LoRAファインチューニング後のベースプロンプト評価
  4. LLM-as-judge: 参照モデル出力とのペア比較で[0,1]スコア化
  5. Class-aware stratified splitting: タスク種別が偏らない評価/学習セットを自動生成

fork 元との主な差分

Helm構成では,Elasticsearch / Kibana / MongoDB / Redis を upstream の同一チャート同梱から外部管理へ切り替え.本番の既存データ基盤を再利用しつつBlueprint部分のみを差し替え可能にし,運用チームへの引き渡し経路を整理した.

`config-configmap.yaml`で日本語SLM向けのモデル・プロンプト・閾値を上書きし,upstream標準の`dfw-configmap.yaml`とは別名で管理.fork側の差分を`git diff upstream/main`で常時追跡できる体制とした.

日本語データ設計ガイド `NeMo_Data_Designer.md` を新規追加し,日本語特有のトークナイズ・敬体/常体の扱い・ドメイン固有語彙の扱いを意思決定履歴として残している.

インフラストラクチャ・運用

H100およびA100を搭載した環境でNeMo CustomizerによるLoRAファインチューニングとNeMo Evaluatorによる自動評価を実行.Elasticsearchに蓄積した本番ログを`workload_id`で分類・重複排除し,評価/学習データセットをビルドするループを回している.

Kibanaで入力データの分布や評価スコアの時系列を可視化し,データ品質とモデル性能の改善サイクルを定量的に追跡できるダッシュボードを構築.開発基盤としてBrev on Google Cloudを導入し,GPU環境の立ち上げ/撤収を分単位で行える運用を確立した.

使用技術

PythonNVIDIA NeMo MicroservicesNVIDIA NIMNeMo Customizer (LoRA)NeMo EvaluatorFastAPICeleryRedisMongoDBElasticsearchKibanaMLflowFlowerKubernetesHelmH100/A100Google Cloud (Brev)uv