アグレッシブなINT quantizationによる精度低下なしに、H100/Blackwellで低レイテンシを実現する必要がある。
TensorRT-LLMを介してFP8 (E4M3) quantizationを使用する。HopperとBlackwellはネイティブFP8 Tensor Coresを備えている。
理由: FP8はINT8よりもダイナミックレンジを良好に保ち、Hopper+でフルハードウェア速度で動作するため、INT8クラスのスループットでFP16に近い品質が得られる。
最終確認:2026年6月
NCP-GENL 試験で問われるアーキテクチャパターンのスキャン可能なリファレンス。上から順に読むか、セクションへジャンプ。
アグレッシブなINT quantizationによる精度低下なしに、H100/Blackwellで低レイテンシを実現する必要がある。
TensorRT-LLMを介してFP8 (E4M3) quantizationを使用する。HopperとBlackwellはネイティブFP8 Tensor Coresを備えている。
理由: FP8はINT8よりもダイナミックレンジを良好に保ち、Hopper+でフルハードウェア速度で動作するため、INT8クラスのスループットでFP16に近い品質が得られる。
モデルがGPUメモリにギリギリ収まり、スループットがメモリ帯域幅によって制限される。
INT4ウェイトオンリー quantization (AWQまたはGPTQ) を適用する。アクティベーションはFP16/FP8に保つ。
理由: ウェイトオンリーINT4はINT8と比較してメモリをほぼ半分にし、帯域幅の圧力を緩和する。アクティベーションの精度が高く保たれるため、精度損失は小さい。
推論後 quantizationと quantizationアウェアトレーニングのどちらを選択するかを決定する。
PTQ(代表的なサンプルでキャリブレーション)から開始し、PTQの精度損失が予算を超える場合にのみQATに切り替える。
理由: PTQは高速で再トレーニングが不要である。QATは精度を回復するが、トレーニング実行のコストがかかるため、精度が重要なモデルに限定して使用する。
KVキャッシュがメモリを支配し、バッチサイズを制限する長文コンテキストの推論。
TensorRT-LLMでFP8またはINT8 KVキャッシュ quantizationを有効にする。
理由: KVキャッシュはシーケンス長×バッチで増加する。これをquantizationすることで、品質への影響を最小限に抑えながら、より大きなバッチとより長いコンテキストのためにメモリを解放する。
異なるリクエスト長が静的バッチ処理においてGPUのアイドル時間を引き起こす。
TensorRT-LLMでインフライト(連続)バッチ処理を使用し、完了したシーケンスを削除し、新しいシーケンスが処理途中に結合できるようにする。
理由: 連続バッチ処理はGPUを飽和状態に保ち、多様なリクエストストリームに対して静的バッチ処理をはるかに上回るスループットを向上させる。
大規模な教師モデルは品質要件を満たすが、レイテンシとコストの目標を達成できない。
より小さな生徒モデルにDistillationし、その後推論のために生徒モデルをquantizationする。
理由: Distillationは、より安価なアーキテクチャに能力を転送する。quantizationと組み合わせることで、コストとレイテンシの削減効果を相乗的に高める。
インタラクティブなユースケースにおいて、シングルストリームのレイテンシが高すぎる。
小さなドラフトモデルをターゲットモデルで検証する投機的デコーディングを適用する。
理由: ドラフトモデルが複数のトークンを提案し、大規模モデルがそれを一度に検証することで、出力分布を変更せずに実時間レイテンシを削減する。
すべてをINT4にquantizationすると、いくつかの高感度な層で精度が大幅に低下する。
混合精度を使用する。高感度な層(例:最終射影、attention)は高精度に保ち、残りをquantizationする。
理由: 層ごとの感度は異なる。選択的な精度は、重みの大部分を縮小しながらも、重要な部分の精度を保護する。
適切な quantizationスキームにもかかわらず、PTQの精度が低い。
本番環境のトラフィックに合致するイン・ディストリビューション・サンプル(数百の代表的なプロンプト)で再キャリブレーションする。
理由: キャリブレーションはアクティベーション範囲を設定する。代表的でないサンプルは、不適切なスケールを生成し、回避可能な精度損失を引き起こす。
モデルの重みが単一のGPUには収まらないが、NVLinkで接続された1つのノード内には収まる。
ノード内のGPU間でTensor parallelismを使用する。
理由: Tensor parallelismは各層をシャード化し、すべてのステップでアクティベーションを交換するため、NVLink/NVSwitchの高いノード内帯域幅が必要となる。
モデルが1つのノードには大きすぎるため、InfiniBandを介して複数のノードにまたがる必要がある。
ノード間でPipeline parallelismを追加し、各ノード内ではTensor parallelismを維持する。
理由: Pipeline parallelismはステージ境界でのみ通信するため、低速なノード間リンクを許容できる。帯域幅を多く消費するTensor parallelはNVLinkのために予約する。
より多くのGPUにスケールしても、スループットの向上が鈍化する。
Nsight Systemsでプロファイリングしてボトルネックを分類する。集合演算が支配的であれば、並列度を減らすか、トポロジーを改善する。
理由: ある点を超えると、all-reduce/all-gatherのオーバーヘッドが追加の計算能力を上回る。通信律速か計算律速かを診断することで、解決策を導き出す。
小さいバッチサイズで、ステップごとのカーネル起動オーバーヘッドがデコードレイテンシを増大させる。
CUDA Graphsを有効にして、デコードループをキャプチャしてリプレイする。
理由: CUDA Graphsは、多くの小さな起動を1つのリプレイに集約し、低いバッチサイズで支配的となるCPU側の起動オーバーヘッドを排除する。
低速なリンクをまたいで配置されたTensor parallelランクがストールを引き起こす。
NVLink/NVSwitchを共有するGPUにTensor parallelランクを固定し、Pipelineステージをノード間に配置する。
理由: 不一致な配置は、高頻度の集合演算をPCIeまたはInfiniBand経由でルーティングし、パイプライン全体のスループットを低下させる。
Attentionがメモリ律速であり、達成可能なコンテキスト長を制限する。
TensorRT-LLM/NeMoスタックによって提供されるFlashAttention(フューズドされたIOアウェアなattentionカーネル)を使用する。
理由: FlashAttentionは、完全なattention行列を具体化することを避け、メモリートラフィックを削減し、より長いシーケンスを高速で可能にする。
複数の小規模モデルがH100 GPUの性能を十分に活用できていない。
MIG (Multi-Instance GPU) を使用してGPUをパーティション化し、各モデルをスライス上で分離する。
理由: MIGはハードウェア分離されたパーティションを提供し、共存する小規模ワークロードの利用率を高め、予測可能なQoSを提供する。
ダウンストリームサービスが常に厳密に有効なJSONを必要とする。
プロンプトの記述のみに頼るのではなく、提供ランタイムでガイド付き/制約付きデコーディング(文法またはJSONスキーマ)を使用する。
理由: 制約付きデコーディングは、生成時に無効なトークンをマスクし、スキーマに準拠した出力を保証する。プロンプトによる誘導だけでは、失敗率を減少させるに過ぎない。
タスクが、ベースモデルが不 consistencyに処理する一貫した形式を必要とする。
まずfew-shotの例を試す。プロンプトベースの誘導が限界に達するか、トークンコストが過剰な場合にのみファインチューニングに移行する。
理由: Few-shotはトレーニング不要で即座に編集可能である。ファインチューニングは、パターンが安定しており、プロンプトのオーバーヘッドが問題となる場合にのみ優位に立つ。
多段階推論タスクが誤った最終回答を出す。
最終回答の前に、chain-of-thought(「段階的に考える」)を引き出すか、構造化された推論テンプレートを使用する。
理由: 中間ステップを公開することで、多段階の精度が向上し、エラーが監査可能になるが、追加のトークンコストが発生する。
プロンプトの微調整によって本番環境の品質がサイレントに低下した。
システムプロンプトをコードとしてバージョン管理し、評価によって変更を承認し、モデルアーティファクトと同じCIを介して展開する。
理由: プロンプトはモデル契約の一部である。バージョン管理されていない編集は、追跡されない回帰や再現不可能な動作を引き起こす。
モデルがトレーニングデータにない事実を幻覚する。
関連するコンテキストを取得し、提供されたコンテキストのみから回答するよう指示を加えてプロンプトに注入する。
理由: 取得したパッセージに基づいたGroundingは、モデルをソースマテリアルに制約し、知識集約型クエリにおける幻覚を削減する。
プロンプトが肥大化しているため、レイテンシとコストが高い。
プロンプトを削減および圧縮する。指示の重複を排除し、取得したコンテキストを要約し、品質を維持できる最小限の例に制限する。
理由: Prefillは入力トークンに比例して増加する。無駄のないプロンプトは、測定可能な品質損失なしに、レイテンシとリクエストごとのコストの両方を削減する。
ユーザーが提供したテキストがシステム指示を上書きする可能性がある。
信頼できる指示と信頼できない入力を明確な区切り文字で分離し、取得したコンテンツやユーザーコンテンツをコマンドではなくデータとして扱う。
理由: 信頼できないテキストを指示チャネルに連結すると、プロンプトインジェクションを招く。明示的な境界は攻撃対象領域を削減する。
限られたGPU予算で、大規模なベースモデルを特定のドメインに適応させる。
LoRAを使用する。低ランクのアダプターをトレーニングし、ベースの重みをフリーズする。
理由: LoRAはパラメータのほんの一部をトレーニングし、メモリと計算を大幅に削減しながら、ほとんどの狭いタスクで完全なファインチューニングに匹敵する性能を発揮する。
70BモデルのLoRAトレーニングでさえ、利用可能なメモリに収まらない。
QLoRAを使用する。フリーズされたベースを4ビット(NF4)にquantizationし、その上にLoRAアダプターをトレーニングする。
理由: ベースを4ビットに保持し、アダプターのみを更新することで、大規模モデルを単一のGPUで最小限の精度損失でファインチューニングできる。
新しいファインチューニングタスクのためにLoRAランクを選択する。
控えめなランク(例:8-16)から開始し、タスクが複雑で検証損失が依然として改善している場合にのみランクを上げる。
理由: 高いランクは容量とコストを増加させる。ランクが高すぎると小規模データセットでの過学習のリスクがあり、低すぎると達成可能な品質が制限される。
モデルは指示に従うが、その出力が人間の好みに合致しない。
まず教師ありファインチューニングを行い、その後RLHFまたはDPOで好みのアライメントを行う。
理由: SFTは形式とタスクを教える。好み最適化は、人間が実際に好む有効な回答を形成する。
PPOを使用したRLHFは不安定で運用負荷が高い。
報酬モデルとPPOループの代わりに、DPO (Direct Preference Optimization) を好みデータセットに対して使用する。
理由: DPOは、別の報酬モデルやRL rolloutなしに好みを直接最適化するため、パイプラインを簡素化し、安定性を向上させる。
LoRAアダプターが推論時にリクエストごとのオーバーヘッドを追加する。
1つのアダプターのみが提供される場合、デプロイのためにアダプターの重みをベースにマージする。
理由: マージされたモデルは推論時にアダプターブランチを持たない。複数のタスクを1つのベースでホットスワップする場合にのみ、アダプターを分離したままにする。
特定のタスクに対するファインチューニングが一般的な能力を低下させる。
汎用/指示データのスライスを混ぜ込み、学習率を下げ、完全なファインチューニングよりもPEFTを優先する。
理由: 汎用データをリプレイし、重みの移動を制限することで、新しいタスクを学習しながらも幅広いスキルを維持する。
事前学習/ファインチューニングデータに重複が多い。
トレーニング前に、ファジー重複排除(例:MinHash/LSH)を実行する。
理由: 重複は計算を無駄にし、モデルを繰り返しコンテンツに偏らせ、記憶の原因となる可能性がある。重複排除はトークンあたりの汎化能力を向上させる。
トレーニング後のベンチマークスコアが不自然に高い。
n-gramオーバーラップフィルタリングを介して、ベンチマーク/評価データに対してトレーニングセットの汚染除去を行う。
理由: テスト項目の漏洩は指標を水増しし、実際の品質を隠す。汚染除去は評価の公正さを保つ。
コーパスに、ガバナンスルールに準拠する個人データが含まれている可能性がある。
トレーニング前に、データパイプラインにPII検出と編集のステージを追加する。
理由: 生PIIでのトレーニングは、情報の反復出力やコンプライアンス違反のリスクを伴う。事前にスクラブすることは、情報漏洩モデルを修正するよりもはるかに安価である。
生のウェブスクレイピングデータはノイズが多く、モデルの品質を低下させる。
品質フィルター(ヒューリスティックと分類器)を適用して、低品質、定型文、スパム文書を排除する。
理由: ある閾値を超えると、データ品質が生のデータ量を上回る。フィルタリングにより、同じトレーニング予算でより優れたモデルが得られる。
ファインチューニングデータは、NeMoトレーニングパイプラインにきれに入力されなければならない。
期待されるNeMo形式(例:プロンプト/応答フィールドを持つJSONL)に変換し、モデルのtokenizerでトークン化する。
理由: 形式とtokenizerの不一致は、サイレントな切り捨てやラベルエラーを引き起こす。NeMoのスキーマに準拠することで、トレーニングの再現性が保たれる。
OpenAI互換APIを使用して、本番LLMエンドポイントを迅速に立ち上げる。
NVIDIA NIMマイクロサービスでデプロイする。非標準の事前/事後処理が必要な場合にのみ、カスタムTritonアンサンブルを構築する。
理由: NIMは最適化されたエンジンと標準APIをすぐに提供する。カスタムTritonは、独自のパイプライン制御が必要な場合にのみ努力する価値がある。
単一リクエスト処理が対応できるよりも速く独立したリクエストが到着する。
Tritonの動的バッチ処理を有効にして、同時リクエストをGPUバッチにまとめる。
理由: バッチ処理は、リクエスト間のカーネルオーバーヘッドを償却し、わずかで限定的なレイテンシコストでスループットを向上させる。
単一のモデルインスタンスがGPUの計算能力を十分に活用できていない。
TritonでGPUごとに複数のモデルインスタンスを設定し、実行をオーバーラップさせる。
理由: 同時インスタンスは、メモリストールによって生じる計算ギャップを埋め、メモリが許す範囲で利用率を向上させる。
トラフィックが急増し、固定されたレプリカではGPUを無駄にするか、SLOを逸脱する。
キューの深さ/GPU使用率に基づいてレプリカをオートスケールし、コールドスタートを吸収するためのウォームプールを用意する。
理由: LLMのコールドスタート(エンジン負荷)は遅い。先行するシグナルとウォーム容量でのスケーリングは、スパイク時のレイテンシを保護する。
既存のクライアントはOpenAIチャット完了APIを期待している。
クライアントが書き換えなしで統合できるように、NIMのOpenAI互換エンドポイントを介してモデルを公開する。
理由: ドロップイン互換APIは、クライアントの移行作業を最小限に抑え、バックエンドを透過的に交換できるようにする。
モデルまたはプロンプトの変更が、品質をサイレントに低下させてはならない。
CIでキュレーションされたゴールデン評価セットを実行し、品質閾値を下回るデプロイをブロックする。
理由: 自動化された回帰ゲートは、ユニットテストがコードをゲートするのと同じように、品質低下がユーザーに到達する前にそれを捕捉する。
自由形式の出力には、採点対象となる単一の参照回答がない。
ルーブリックを使用し、サンプルの人間による評価でキャリブレーションされたLLM-as-judgeを使用する。
理由: ルーブリック駆動の審査員は主観的な評価をスケールアップし、人間のキャリブレーションは審査員自身のバイアスから保護する。
MMLUスコアは高いが、ユーザーが本番タスクについて不満を言っている。
一般的なベンチマークだけでなく、ビジネス成果に結びつくタスク固有のメトリックで評価する。
理由: 一般的なベンチマークは、狭いデプロイタスクとの相関が弱い。適切なメトリックは、ユーザーが実際に必要としているものを反映する。
オフライン評価は良好に見えるが、実世界への影響は不確実である。
オンラインA/Bテストを実行し、トラフィックの一部を新しいバージョンにルーティングして、結果メトリックを比較する。
理由: ライブA/Bテストは、オフラインセットが見逃す分布シフトやユーザー行動を捕捉し、実際の改善を確認する。
サービスフリート全体のGPUヘルスと利用状況を可視化する必要がある。
DCGMメトリック(使用率、メモリ、ECC、温度)をPrometheusにエクスポートし、それらに対してアラートを設定する。
理由: DCGMは標準のNVIDIAテレメトリソースである。これがないと、GPUレベルの飽和と障害が検出されない。
ユーザーは断続的に遅い応答を経験するが、平均レイテンシは問題ないように見える。
p95/p99の最初のトークンまでの時間とトークン間レイテンシを追跡し、パーセンタイルSLO違反でアラートを発する。
理由: 平均値はテールレイテンシを隠す。LLMのUXはp95/p99に左右されるため、パーセンタイルSLIが適切なアラートシグナルである。
高トラフィックのエンドポイントに新しいモデルバージョンを展開する。
カナリアリリース(少量のトラフィック分割)を介して展開し、SLOまたは品質回帰時に自動ロールバックを行う。
理由: カナリアリリースは影響範囲を限定し、ビッグバンデプロイとは異なり、完全な展開前にメトリックが安全性を確認できるようにする。
GPUの計算スパイクが見られないのに、負荷がかかるとスループットが低下する。
KVキャッシュとバッチスロットの利用率を監視する。キャッシュが飽和したら、スケールアウトするか、最大コンテキストを短縮する。
理由: KVキャッシュの枯渇は、計算能力が限界に達する前に同時実行性を制限する。これを監視することで、GPU使用率だけでは見逃すスループットの急落を説明できる。
KVキャッシュがターゲットのバッチとコンテキストに対して大きすぎる。
Grouped-Query Attention (GQA) またはMulti-Query Attention (MQA) を使用するアーキテクチャを優先する。
理由: GQA/MQAはキー/バリューヘッドを共有し、KVキャッシュメモリを削減し、品質損失をほとんどなく達成可能なバッチサイズを向上させる。
モデルの利用可能なコンテキストを、トレーニングされた長さを超えて拡張する必要がある。
RoPEスケーリング(例:NTK-aware / YaRN)と軽い長文コンテキストファインチューニングを使用する。
理由: RoPE補間は位置エンコーディングを拡張する。短いファインチューニングにより、完全な再トレーニングなしにモデルをより長い範囲に適応させる。
比例的な推論コストなしで、より多くの容量を望む。
トークンごとにトップkのエキスパートのみをアクティブにするMixture-of-Expertsモデルを検討する。
理由: MoEはパラメータをスケールアップしながらトークンあたりのFLOPsを低く保つが、ルーティングの複雑さと不均一なエキスパート負荷管理が追加される。
デプロイされたモデルに、トピック、安全性、および形式の境界が必要である。
NeMo Guardrailsでモデルをラップし、入力と出力のガードレール(トピック、モデレーション、ジェイルブレイク)を強制する。
理由: プログラム可能なガードレールは、モデルを再トレーニングすることなく、制御可能な安全層をモデルに追加する。
モデルが時折、有害または不安全なコンテンツを生成する。
出力モデレーション分類器を追加し、リスク閾値を超える応答をブロック/再生成する。
理由: 個別のモデレーションパスは、プロンプトレベルの指示だけでは確実に防げない不安全な生成を捕捉する。
利害関係者が、モデルが責任あるAI基準を満たしているという証拠を要求している。
バイアスと毒性のベンチマークを実行し、結果を文書化し、モデルカードでバージョン全体にわたって追跡する。
理由: 文書化され、再現可能な安全性評価は、コンプライアンスをサポートし、回帰が本番環境に到達する前に表面化させる。