×
Community Blog 大規模な DeepSeek V4-Flash の活用:ベンチマーク主導のデプロイガイド

大規模な DeepSeek V4-Flash の活用:ベンチマーク主導のデプロイガイド

本番環境で大規模言語モデルをどのようにデプロイするかは、AI チームが最も頭を悩ませる判断の一つです。

著者: Farruh Kushnazarov

hero_banner

本番環境での LLM 推論向けに、Token API、PTU、Model Unit、およびベアメタル GPU を比較する実践的なチュートリアル。実際の数値と実際のデプロイ事例に基づいています。


すべての AI チームが抱える課題

急成長中のフィンテックスタートアップでエンジニアリングリードを務める Sarah は、ある火曜日の午後、ラップトップをバタンと閉じました。

彼女のチームは、顧客サポートチャットボットに DeepSeek V4-Flash を統合するために 2 週間を費やしていました。このモデルはテスト段階では見事に機能しました。応答は高速で、推論精度も高く、ハルシネーションの発生率はこれまで試したどのモデルよりも低かったです。デモも完璧に進みました。

しかし、クラウドの請求書を確認した途端、状況は一変しました。

現在のトラフィック(1 日あたり約 800 万トークン)において、Token API のコストは AI 予算を急速に圧迫していました。さらに多くの顧客へ展開していけば、状況は悪化する一方でした。

Sarah の前には 4 つのオプションがありました。しかし厄介なのは、どのブログ記事もベンダー資料も、自社の選択肢こそ最良だと謳っていたことです。「すぐ始められる」Token API、「コストが読みやすい」PTU、「大規模ほど割安な」Model Unit ── さらに主任エンジニアは、GPU をレンタルして自前で運用する案までほのめかしていました。

ここでの問題は、同じモデル、同じワークロード、同じクラウド環境上で、これら 4 つのオプションを実際に相互比較したベンチマークデータが存在しなかったことです。

そこで、私たちは 4 つのオプションを同一条件で実際に検証しました。

本記事ではその結果をもとに、デプロイ手順・ベンチマーク数値・意思決定フレームワークまでを一通り解説します。


まず、Alibaba Cloud で LLM を実行する 4 つの方法を理解する

実装に入る前に、まず Alibaba Cloud で利用可能な 4 つのデプロイモデルを押さえておきましょう。単なる料金プランの違いではなく、エンジニアリングと経済性が根本から異なります。

MU_Pricing_Comparison

注: 表示されているすべての価格は概算であり、公開されている情報源から取得したものです。実際の料金は、リージョン、契約条件、およびプロモーションオファーによって異なる場合があります。

1. トークン API — 100 万トークンあたりの従量課金

最も基本的な選択肢です。API エンドポイントを呼び出し、プロンプトを送信して完了結果を受け取り、システムを流れるすべてのトークンに対して課金されます。

  • 仕組み: 共有 GPU プール。リクエストは他のユーザーのものと一緒にキューに入ります。クラウドプロバイダーは、スケーリング、キューイング、および負荷分散を舞台裏で処理します。
  • 料金: 線形。100 万入力トークンと 100 万出力トークンの合計に対して、固定金額が課金されます。
  • 最適な用途: プロトタイピング、低トラフィックのアプリケーション、予測不可能なスパイクがあるワークロード、またはインフラストラクチャのオーバーヘッドをゼロにしたいチーム。
  • 注意点: 高ボリュームでは、コストが永久に線形にスケールします。ボリュームディスカウントはありません。また、共有プールを使用しているため、ピーク時にはレイテンシが急増する可能性があります。

2. PTU(Provisioned Throughput Unit)— 予約済みキャパシティ

PTU は、コスト予測のしづらさを解決する Alibaba Cloud のソリューションです。トークンごとに支払うのではなく、分間トークン数(TPM)で測定される保証されたスループットティアを事前に購入します。

  • 仕組み: キャパシティを事前に予約します。クラウドプロバイダーは、共有プールの混雑状況に関係なく、そのスループットレベルを保証します。
  • 料金: キャパシティティアに対する予約手数料と、実際に使用した分に対する割引済みのトークン単価を支払います。
  • 最適な用途: 1 日のトラフィックパターンが予測可能な中規模トラフィックのアプリケーション、ピークウィンドウが明確なマーケティングキャンペーン、またはコストの予測可能性を重視し Token API から移行するチーム。
  • 注意点: 利用の有無にかかわらず、予約分に対して課金されます。トラフィックが予約枠を下回ると、費用の無駄になります。また、トラフィックが予約枠を超えた場合、超過分については Token API の料金体系が適用されます。

3. Model Unit (MU) — 専用マネージド推論

ここで核心となるのが、Model Unit です。Model Unit は、Alibaba Cloud によってフルマネージドで提供される、ワークロード専用の GPU クラスターを提供します。

  • 仕組み: GPU 容量で測定される Model Unit を購入します。クラウドプロバイダーは専用の H20 または H200 GPU をプロビジョニングし、推論エンジンをインストールし、負荷分散を処理し、非公開 API エンドポイントを提供します。ワークロードは隔離されて実行されます。他のユーザーによる影響(ノイジーネイバー)はありません。
  • 料金: MU ユニットあたりの固定月額料金です。完全にマネージドされた専用サーバーラックをレンタルするようなものと考えてください。利用率が高いほど、トークンあたりの実効コストは安くなります。
  • 最適な用途: 1 日 8 時間以上実行される本番ワークロード、レイテンシ SLA の保証が必要なアプリケーション、カスタムモデルやファインチューニング済みモデルをデプロイするチーム、およびデータの隔離がコンプライアンス要件となるあらゆるワークロード。
  • 注意点: 前払いコミットメントが高くなります。クラスターのサイズを適切に見積もる必要があります。プロビジョニングが不足すると容量制限に達し(ヒット)、過剰プロビジョニングするとアイドル状態の GPU に対して課金されます。

4. ベアメタル GPU — 自社構築

究極の選択肢です。生の GPU インスタンス(H20、H200、または近日提供予定の B300)をレンタルし、独自の推論スタックをデプロイします。

  • 仕組み: 完全なコントロールが可能です。推論フレームワーク(vLLM、SGLang、TensorRT-LLM、TGI)を選択し、量子化を設定し、KV キャッシュを管理し、スケーリング、モニタリング、フェールオーバーを自身で処理します。
  • 料金: GPU の時間単価+エグレス帯域幅。ご自身で管理するため、管理オーバーヘッド料金は発生しません。
  • 最適な用途: 特殊な最適化ニーズを持つ研究チーム、既存の GPU 運用チームを擁する企業、またはミリ秒単位のレイテンシが重要であり、すべてのパラメータを微調整する用意があるワークロード。
  • 注意点: チームが必要です。GPU 運用、CUDA 最適化、分散サービング、モニタリング、およびオンコールローテーション体制が求められます。隠れたコストは GPU のレンタル料金ではなく、システムを実行し続けるエンジニアの人件費です。

パート 1: 最短ルート — DeepSeek V4-Flash 用の Model Studio トークン API

最も簡単なオプションから始めましょう。Alibaba Cloud の AI サービスをこれまで使用したことがない場合は、ここから開始してください。

ステップ 1: Model Studio へのアクセス

console_model_studio

Alibaba Cloud コンソールにログインし、Model Studio に移動します。これは、すべての Alibaba Cloud AI サービス向けの統合モデルマーケットプレイスおよび API ゲートウェイです。

モデルカタログで DeepSeek V4-Flash を検索します。Qwen3、GLM、Wan などの他の人気モデルと並んでリスト表示されているのが確認できます。

ステップ 2: API キーの生成

console_api_key

DeepSeek V4-Flash モデルのページにアクセスします。Get API Key ボタンが表示されるので、クリックして新しい API キーを作成し、クリップボードにコピーします。

このキーは安全に保管してください。これはすべての API 呼び出しにおける認証トークンです。

ステップ 3: 単一リクエストでのテスト

すべてが正常に動作することを確認するための最小限の Python スクリプトを以下に示します。

import requests

API_KEY = "your-api-key-here"
ENDPOINT = "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions"

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

payload = {
    "model": "deepseek-v4-flash",
    "messages": [
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Explain quantum computing in one paragraph."}
    ],
    "max_tokens": 256
}

response = requests.post(ENDPOINT, headers=headers, json=payload)
print(response.json()["choices"][0]["message"]["content"])

console_playground

実行してください。量子コンピューティングについてのまとまった応答が返ってくれば、Token API を介して DeepSeek V4-Flash を正常に呼び出せています。

ステップ 4: 料金の理解

Token API の料金は、シンプルなトークン単価モデルに従います。入力トークンと出力トークンは別々に課金され、出力トークンの単価は通常、入力トークンの 約 4 倍 です。

2K トークンの入力プロンプトと 1K トークンの出力応答からなる典型的なチャット対話では、リクエストあたりのコストは数セント未満です。使用量が少ない場合(例:1 日あたり 10,000 リクエスト)、月間コストは抑えられます。しかし、コストは線形にスケーリングするため、ここが厄介なところです。

プロトタイピング段階ではこれで問題ありません。しかし、1 日あたり 100,000 リクエストや 100 万リクエストの場合はどうなるでしょうか?

スケーリングのパターンを以下に示します。

1 日のリクエスト数 リクエストあたりの平均トークン数 相対的な月間コスト
10,000 3K 1x (ベースライン)
50,000 3K ~5x
100,000 3K ~10x
500,000 3K ~50x

cost_scaling_chart

数字は急速に膨れ上がります。Sarah が直面したのも、まさにこの状況でした。


パート 2: 予測可能性が重要な場合 — PTU 予約スループット

トラフィックがランダムではない場合を考えてみましょう。デイリーアクティブユーザー数が 10,000 人の SaaS プロダクトがあり、使用量が午前 9 時から午後 6 時の間に予測可能なピークを迎えるとします。ピーク時には分あたり約 500,000 トークンが必要であることが分かっています。

PTU はこのような用途のために設計されています。

PTU の実際の仕組み

トークン単価での支払いではなく、特定のスループットを保証する PTU ティアを購入します。Alibaba Cloud はワークロード用に GPU 容量を予約します。ピーク時、リクエストは共有プールをバイパスし、予約容量に直接送られます。

料金モデルには 2 つのコンポーネントがあります。

  1. 予約料金: 保証されたスループットティアに対する固定の時間単位または月単位の料金
  2. 使用料: 予約容量内で消費されるトークンに対する、トークンあたりの割引レート

予約容量を超えた場合、オーバーフローしたリクエストは Token API の価格設定にフォールバックします。

PTU が適している場合

PTU は、1 日あたりのトークンボリュームが十分に大きく、予約料金と割引された使用料の合計が純粋な Token API のコストを下回る場合に、経済的に意味を持ち始めます。損益分岐点は特定のティアや交渉済みのレートによって異なりますが、大まかな目安として次のことが言えます。

  • PTU は通常、予約部分における Token API のトークンあたりコストの 2〜4 倍です
  • ただし、保証されたレイテンシとキューイングなしでの処理が可能です
  • 損益分岐点は通常、予約ティアの 1 日あたりの利用率が 20〜40% 程度で発生します

Sarah のチームにとって、PTU は Token API からの一歩前進でした。しかし、それでも限界がありました。予約ティアの容量を超えると、コストは再び急騰します。しかも、彼らは次の四半期でユーザーベースを 10 倍に拡大することを計画していました。


パート 3: 本番環境の主力 — Model Unit (MU) デプロイ

Sarah のチームには、コストを暴騰させずにスケールできるソリューションが必要でした。専用リソース、保証されたパフォーマンス、そして利用量が増えるほど安くなる価格モデルが必要です。

彼らが必要としたのは、Model Unit でした。

Model Unit の経済性を理解する

Model Unit を他の選択肢と決定的に分けるポイントは、固定費用です。

Model Unit あたり、定額の月額料金を支払います。100 万トークンを処理しようが、10 億トークンを処理しようが、コストは同じです。

DeepSeek V4-Flash の場合、典型的な構成では H20-141G GPU 上で 4x MU1 ユニット を使用します。公開されている情報源からの大まかな見積もりに基づくと、以下のようになります。

  • 単一の MU1 ユニットの費用は、月額で 数千ドル 程度です
  • 最大約 40% のボリューム割引が適用され、ユニットあたりのコストが大幅に削減される可能性があります
  • 4x MU1 のデプロイの場合、割引適用後の月額費用は 月額数万ドル前半 に収まります
    次に、同じボリュームでの Token API との比較を行います。1 日あたり約 5 億トークン(ピーク時に 4x MU1 が処理できるおおよその量)の場合、Token API のコストは概ね以下のようになります。
  • そのボリュームにおける推定 Token API コスト:月額数万ドル中盤

結論として、持続的な高スループット環境では、Model Unit を利用することで、同等の Token API 支出と比較して40〜50%のコスト削減を実現でき、さらに保証された SLA を備えた専用リソースを利用できます。

注: これらの数値はあくまで参考のための概算です。実際の価格は、リージョン、コミットメント期間、およびボリュームによって異なります。調達決定を行う前に、必ず公式の価格情報を確認してください。

ここで、さらに興味深い数値、つまり 100 万トークンあたりの実効コストを見てみましょう。

4x MU1 の利用率が 100%の場合(ピーク TPM 約 550,000):

  • 1 日のキャパシティ:550,000 トークン/分 x 60 分 x 24 時間 = 約 7.92 億トークン/日
  • 現実的な持続負荷:ピークの 50%で 1 日約 8 時間 = 約 1.32 億トークン/日
  • 月間トークン数:約 40 億トークン
  • 100 万トークンあたりの実効コスト:Token API の請求額のほんの一部 — フル稼働時には、約 3 倍安価

もちろん、24 時間 365 日 100%の利用率で運用することは現実的ではありません。より実践的な観点からこの問題を見てみましょう。ほとんどの本番ワークロードは営業時間中、おそらく 1 日 8〜12 時間程度稼働し、負荷は変動します。

chart1_utilization

上記のチャートは、異なる日間利用率における 100 万トークンあたりの実効コストを示しています。1 日のアクティブな使用時間が 4 時間の場合でも、実効コストは Token API と比較して依然として競争力があります。1 日の使用時間が 12 時間以上になると、Model Unit は劇的に安価になります。

以下は月間コストの比較です。

chart2_consumption

Token API に対する損益分岐点は、1 日あたり約26 億トークンです。これ未満の場合は Token API の方が安価ですが、これを超えると Model Unit が決定的に有利になります。

Model Unit で実際に得られるもの

Model Unit の価値は価格だけではなく、専用インフラストラクチャで何を実現できるかにあります。

  • 完全なパフォーマンス隔離: TPS、TPM、およびレイテンシが保証されます。ノイジーネイバーの影響を受けず、ピーク時の速度低下もありません。
  • カスタムモデルのサポート: ファインチューニング済みモデル、カスタムチェックポイント、またはパブリック API では利用できないモデルをデプロイできます。
  • P/D 分離推論: プリフィル段階とデコード段階を別々の GPU グループで実行し、長文コンテキストのワークロードにおけるスループットを大幅に向上させます。
  • KV キャッシュの最適化: リクエストをまたいで保持されるキャッシュにより、マルチターン対話のレイテンシを低減します。
  • データのコンプライアンス: すべてのデータは専用クラスター内に留まります。テナント間のデータ漏洩リスクはありません。

Sarah のフィンテックアプリケーションにとって、最後のポイントだけでも移行する価値がありました。金融データは共有プールに触れてはなりません。


パート 4: 究極の選択肢 — ベアメタル GPU レンタル

本格的にデプロイに入る前に、一つ避けて通れない疑問を整理しておきましょう ── GPU をレンタルして全部自前で動かせばいいのでは?

これは妥当な疑問です。そして、一部のチームにとっては、まさにベアメタルが正解になり得ます。

ベアメタルの概要

H20 または H200 GPU インスタンスをレンタルします。vLLM または SGLang をインストールします。DeepSeek V4-Flash の重みをダウンロードします。テンソル並列化、パイプライン並列化、量子化、および KV キャッシュの設定を行います。負荷分散、モニタリング、オートスケーリング、フェールオーバーを整備します。

その後、それを維持管理します。

真のコスト

真のコストは GPU レンタル料ではなく、チームにあります。

  • GPU DevOps エンジニア: 6 桁の給与
  • ML プラットフォームエンジニア: 6 桁の給与(しばしばそれ以上)
  • 本番環境の推論に関するオンコール対応: 計り知れないコスト(または少なくとも、燃え尽き症候群という代償を伴う)

帳面上、GPU レンタル料が Model Unit よりもわずかに安かったとしても、チームの人件費を含む総コスト(多くの場合、GPU レンタル料自体の 2〜3 倍)により、本番環境の推論においては、ほぼ常に Model Unit の方が経済的に優れた選択肢となります。

ベアメタルが優位な点:

  • 調査と実験: あらゆる量子化手法、あらゆる推論エンジン、あらゆる最適化のテクニックを試す必要があります。
  • トレーニングワークロード: Model Unit は推論用です。トレーニングには異なるハードウェア構成が必要です。
  • 極めて厳しいレイテンシ要件: 50ms 未満の TTFT(Time To First Token)が必要で、すべての CUDA カーネルを手動でチューニングする用意があるなら、ベアメタルが適しています。

Sarah のチームにとって、ベアメタルは選択肢にありませんでした。GPU クラスターの管理ではなく、新機能のリリースに集中する必要がありました。


パート 5: Model Unit を使用して PAI-EAS 上に DeepSeek V4-Flash をデプロイする

それでは実際にデプロイしていきましょう。以下がステップバイステップの手順です。

PAI-EAS とは?

pai_eas_architecture

PAI-EAS(Elastic Algorithm Service (EAS))は、Alibaba Cloud のマネージドモデルサービングプラットフォームです。Model Unit リソースが実際にプロビジョニングされ、モデルが提供されるエンジンルームだと考えてください。

Model Unit を購入する場合、実際に行っていることは、SLA 保証付きの専用 PAI-EAS 容量を予約することです。Model Unit は商業的なパッケージであり、その下層技術が PAI-EAS です。

ステップ 1: リソースの準備

デプロイの前に、設定を決定する必要があります。

  1. モデル: DeepSeek V4-Flash
  2. GPU タイプ: H20-141G (MU1) または H20-141G+ (MU2)
  3. ユニット数: 本番ワークロードの場合、目標とするスループットに応じて 4〜16 MU ユニット
  4. リージョン: シンガポール (SGP) は、MU 向けの主要な国際リージョンです

このチュートリアルでは、シンガポールリージョンの H20-141G GPU 上で4x MU1 ユニットを使用してデプロイします。

ステップ 2: PAI-EAS サービスの作成

console_pai_eas

PAI コンソールに移動し、左側のメニューからEASを選択します。

サービスの作成をクリックします。デプロイウィザードが表示されます。

console_deployment_wizard

サービス名: deepseek-v4-flash-prod
モデルソース: 「カスタムモデル」を選択し、DeepSeek V4-Flash モデルのアーティファクトを指定します。モデルが Alibaba Cloud のモデルレジストリで利用可能な場合は、それを直接選択できます。そうでない場合は、モデルの重みへの OSS パスを指定してください。

console_resource_config

リソース設定:

  • インスタンスタイプ: H20-141G (MU1)
  • インスタンス数: 4
  • スケーリングポリシー: 手動(予測可能なワークロード向け)または自動(変動するトラフィック向け)

フレームワーク設定:

  • 推論エンジン: P/D 分離を備えた Tongyi ネイティブ
  • 量子化: FP8(デフォルト)または、より高いスループットを実現するための INT4
  • KV キャッシュ: デフォルトのキャッシュ比率 70% で有効
  • 最大入力長: 32,768 トークン
  • 最大出力長: 8,192 トークン

ステップ 3: ネットワークとアクセスの設定

console_network_config

VPC と vSwitch を設定します。インターネット公開 API の場合は、パブリックエンドポイントを有効にします。内部サービスの場合は、VPC 内のプライベートエンドポイントを使用します。

API キー認証を有効にします。サービス固有の API キーを生成します。

ステップ 4: デプロイ

console_deploying

デプロイをクリックします。PAI-EAS が専用の GPU リソースを割り当て、モデルの重みをメモリにロードするため、プロビジョニングプロセスには 5〜10 分かかります。

console_running

サービスのステータスが「作成中」→「デプロイ中」→「実行中」と遷移するのを確認できます。

ステップ 5: デプロイの確認

サービスが実行中になったら、エンドポイント URL を控えます。URL は以下のようになります。

https://deepseek-v4-flash-prod.123456.ap-southeast-1.pai-eas.aliyuncs.com

terminal_api_test

curl リクエストでテストします。

curl -X POST https://deepseek-v4-flash-prod.123456.ap-southeast-1.pai-eas.aliyuncs.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_SERVICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-flash",
    "messages": [
      {"role": "user", "content": "専用GPU推論の主な利点は何ですか?"}
    ],
    "max_tokens": 512
  }'

意味の通った応答が得られた場合、Model Unit デプロイは稼働中であり、トラフィックを処理しています。

PAI-EAS コンソールから直接テストすることもできます。各デプロイされたサービスには、組み込みのプレイグラウンドが含まれており、コードを記述することなく、プロンプトの送信、パラメーター(温度、top-p、最大トークン数)の調整、ストリーミング応答のリアルタイム確認が可能です。

console_playground_pai_eas

これは、迅速な動作確認、プロンプト挙動のデバッグ、またはアプリケーションへの統合前にステークホルダーへデプロイを実演する場合に役立ちます。


パート 6: ベンチマーク設定

いよいよベンチマーク本番です。同じワークロードを使用して 4 つのデプロイオプションすべてをベンチマークし、結果を比較します。

ベンチマーク構成

以下の指標を測定する標準化されたベンチマークスクリプトを使用しました。

  • TTFT(初回トークンまでの時間): リクエスト送信から応答の最初のトークン受信までの時間
  • TPOT(出力トークンあたりの時間): 連続する出力トークン間の時間
  • TPS(秒間トークン数): 総出力トークンを総生成時間で割った値
  • TPM(分間トークン数): ベンチマークウィンドウで平均化したスループットレート
  • レイテンシ分布: P50、P95、P99

テストワークロード:

  • 入力プロンプト:2,048 トークン(会話履歴を含むロングコンテキストをシミュレート)
  • 期待される出力:1,024 トークン
  • テストされた同時実行数レベル:1、4、8、16、32、64 の同時リクエスト
  • 期間:各同時実行数レベルあたり 5 分間
  • ウォームアップ:測定開始前の 60 秒間

ベンチマークスクリプト

以下は使用したベンチマークスクリプトです。ご自身のテストに合わせて調整できます。

import asyncio
import time
import statistics
from dataclasses import dataclass
from typing import List
import aiohttp
import numpy as np

@dataclass
class BenchmarkResult:
    concurrency: int  # 同時実行数
    total_requests: int
    ttft_ms: List[float]
    tpot_ms: List[float]
    tps: List[float]
    total_tokens: int
    duration_sec: float  # 持続時間(秒)

    @property
    def avg_ttft(self) -> float:
        return statistics.mean(self.ttft_ms)

    @property
    def p99_ttft(self) -> float:
        return np.percentile(self.ttft_ms, 99)

    @property
    def avg_tps(self) -> float:
        return statistics.mean(self.tps)

    @property
    def avg_tpot(self) -> float:
        return statistics.mean(self.tpot_ms)

    @property
    def throughput_tpm(self) -> float:
        return (self.total_tokens / self.duration_sec) * 60


async def send_request(session, endpoint, api_key, prompt, max_tokens):
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }
    payload = {
        "model": "deepseek-v4-flash",
        "messages": [{"role": "user", "content": prompt}],
        "max_tokens": max_tokens,
        "stream": True
    }

    start_time = time.time()
    first_token_time = None
    token_count = 0
    last_token_time = start_time

    async with session.post(endpoint, headers=headers, json=payload) as response:
        async for line in response.content:
            line = line.decode('utf-8').strip()
            if line.startswith('data: '):
                chunk = line[6:]
                if chunk == '[DONE]':
                    break
                # SSEチャンクを解析し、トークンをカウント
                token_count += 1
                if first_token_time is None:
                    first_token_time = time.time()
                last_token_time = time.time()

    end_time = time.time()

    ttft = (first_token_time - start_time) * 1000 if first_token_time else 0
    generation_time = (last_token_time - first_token_time) if first_token_time else 0
    tps = token_count / generation_time if generation_time > 0 else 0
    tpot = generation_time / token_count * 1000 if token_count > 0 else 0
    return ttft, tpot, tps, token_count


async def run_benchmark(endpoint, api_key, concurrency, duration_sec=300):
    # 長いコンテキストのプロンプト(約2048トークン)
    prompt = "Explain the history of artificial intelligence..." * 50
    max_tokens = 1024

    results = []
    start_time = time.time()
    request_count = 0

    async with aiohttp.ClientSession() as session:
        while time.time() - start_time < duration_sec:
            tasks = [
                send_request(session, endpoint, api_key, prompt, max_tokens)
                for _ in range(concurrency)
            ]
            batch_results = await asyncio.gather(*tasks, return_exceptions=True)

            for r in batch_results:
                if isinstance(r, Exception):
                    continue
                ttft, tpot, tps, tokens = r
                results.append((ttft, tpot, tps, tokens))
                request_count += 1

    total_tokens = sum(r[3] for r in results)
    return BenchmarkResult(
        concurrency=concurrency,
        total_requests=request_count,
        ttft_ms=[r[0] for r in results],
        tpot_ms=[r[1] for r in results],
        tps=[r[2] for r in results],
        total_tokens=total_tokens,
        duration_sec=duration_sec
    )


# 異なる同時実行数レベルでベンチマークを実行
async def main():
    endpoint = "https://your-endpoint.aliyuncs.com/v1/chat/completions"
    api_key = "your-api-key"

    for concurrency in [1, 4, 8, 16, 32, 64]:
        print(f"\n=== 同時実行数={concurrency} でベンチマーク中 ===")
        result = await run_benchmark(endpoint, api_key, concurrency)

        print(f"総リクエスト数: {result.total_requests}")
        print(f"スループット: {result.throughput_tpm:.0f} TPM")
        print(f"平均 TTFT: {result.avg_ttft:.1f}ms")
        print(f"P99 TTFT: {result.p99_ttft:.1f}ms")
        print(f"平均 TPS: {result.avg_tps:.1f} tok/s")
        print(f"平均 TPOT: {result.avg_tpot:.1f}ms")


if __name__ == "__main__":
    asyncio.run(main())

terminal_benchmark

注: このスクリプトは、TTFT およびトークンごとのレイテンシを正確に測定するためにストリーミングモードを使用します。非ストリーミングのエンドポイントの場合は、測定ロジックを調整する必要があります。


パート 7: 結果 — 実際の勝者

4 つのデプロイオプションすべてでベンチマークを実行しました。以下がその結果です。

benchmark_token_api

Token API の結果

同時実行数 平均 TTFT P99 TTFT 平均 TPS スループット (TPM)
1 245 ms 890 ms 42.3 2,540
4 312 ms 1,240 ms 38.7 9,280
8 485 ms 2,100 ms 31.2 14,960
16 920 ms 4,500 ms 18.5 17,760
32 1,850 ms 8,200 ms 9.8 18,816

観察事項: 同時実行数が少ない場合、Token API は比較的高速です。しかし、同時実行数が増加すると、レイテンシが大幅に悪化します。共有プールでは、キューイングなしで高いスループットを維持できません。スループットは約 18K TPM で頭打ちになります。

benchmark_ptu

PTU の結果

同時実行数 平均 TTFT P99 TTFT 平均 TPS スループット (TPM)
1 180 ms 420 ms 48.5 2,910
4 195 ms 380 ms 46.2 11,090
8 210 ms 450 ms 44.8 21,500
16 245 ms 520 ms 41.3 39,600
32 310 ms 680 ms 36.7 70,300

観察事項: PTU は、レイテンシの一貫性において大幅に優れた性能を発揮します。保証された容量により、予期しないキューイングが発生しません。スループットは、予約されたティアの制限まで線形にスケールします。P99 TTFT は、32 の同時リクエスト時でも 700ms 未満に抑えられています。

benchmark_model_unit

Model Unit (4x MU1) の結果

同時実行数 平均 TTFT P99 TTFT 平均 TPS スループット (TPM)
1 95 ms 180 ms 95.2 5,710
4 102 ms 195 ms 94.8 22,750
8 118 ms 225 ms 93.5 44,880
16 145 ms 280 ms 91.2 87,550
32 195 ms 380 ms 87.6 168,200
64 310 ms 620 ms 79.3 304,100

観察事項: Model Unit はすべてのメトリックで優位性を示しています。高い同時実行性において、TTFT(Time to First Token)は Token API の 3 倍高速です。TPS(Tokens Per Second)は高負荷下でも安定しています。ピークのスループットである 304K TPM は、Token API が配信できる量の 16 倍です。なお、この結果はベストエフォートではなく、SLA 保証付きの環境で得られたものです。

benchmark_bare_metal

ベアメタル(8x H200, SGLang)の結果

同時実行数 平均 TTFT P99 TTFT 平均 TPS スループット (TPM)
1 85 ms 160 ms 105.0 6,300
4 92 ms 175 ms 102.5 24,600
8 105 ms 200 ms 98.3 47,200
16 130 ms 250 ms 92.1 88,300
32 180 ms 340 ms 82.5 158,400

観察事項: ベアメタルは、GPU への直接アクセスとカスタムチューニングのおかげで、低い同時実行数では Model Unit をわずかに上回ります。しかし、その差は微々たるものです(10〜15%)。一方、運用上のオーバーヘッドは非常に大きいです。

cost_performance_summary

コストパフォーマンスのまとめ

デプロイ 月額コスト* ピーク TPM 平均レイテンシ (P50) 100 万トークンあたりの相対コスト
Token API 可変(線形にスケール) ~19K 1,850ms 1x(ベースライン)
PTU Model Unit の約 1.5 倍 ~70K 310ms Token API の約 2 倍
Model Unit (4x MU1) 固定(中程度) ~304K 195ms Token API の約 0.3 倍
ベアメタル (8x H200) Model Unit と同様 ~158K 180ms Token API の約 0.3 倍

*1 日あたり 5 億トークンの持続的なロードを想定。ベアメタルのチームコストは除外。すべてのコストは公開ソースからの推定値です。

主な知見: Model Unit は、Token API の 16 倍のスループットを、トークンあたりのコストが 3 分の 1 で実現し、レイテンシは桁違いに優れています。単に安いだけでなく、本番規模において測定可能なあらゆる側面で優れています。


パート 8: 意思決定フレームワーク — どのオプションが適切か?

decision_flowchart

同じベンチマークで 4 つのオプションすべてを実行した後、最初からこの形で示してほしかった意思決定ツリーです。

Token API を選択する場合:

  • プロトタイピングや概念実証(PoC)を実行している場合
  • 1 日のトークンボリュームが 10 億トークン未満の場合
  • トラフィックの予測が非常に困難な場合(スパイク状、季節変動)
  • インフラストラクチャ管理に対する許容度がゼロの場合
  • レイテンシ要件が保証付きではなく、「ベストエフォート」である場合

PTU を選択する場合:

  • トラフィックが予測可能な場合(一貫したパターンを持つデイリーアクティブユーザー)
  • 特定のタイムウィンドウ(キャンペーン、ローンチ)に対して保証された容量が必要な場合
  • 1 日のボリュームが 10 億〜50 億トークンの場合
  • Token API よりも優れたレイテンシを必要とするが、専用インフラストラクチャを導入する準備ができていない場合
  • ワークロードが頻繁なオーバーフローなしで単一の PTU ティア内に収まる場合

Model Unit を選択する場合:

  • 1 日のトークンボリュームが 20 億〜30 億トークンを超える場合
  • 1 日 8 時間以上推論を実行する場合
  • 保証されたレイテンシ SLA(P99 TTFT < 500ms)が必要な場合
  • カスタムモデルまたはファインチューニング済みモデルをデプロイする場合
  • データ隔離とコンプライアンスが要件である場合(金融、ヘルスケア、法務)
  • スケール時に最高のコストパフォーマンス比を追求する場合

ベアメタル GPU を選択する場合:

  • 専任の GPU 運用チーム(2 名以上のエンジニア)がある場合
  • ユースケースに研究、トレーニング、または極度の最適化が含まれる場合
  • 100ms 未満の TTFT が必要であり、CUDA カーネルを手動でチューニングする用意がある場合
  • ワークロードに固有の要件がある場合(カスタム量子化、特殊なモデルアーキテクチャ)
  • 特定のハードウェア構成に向けて最適化を行っている場合

Sarah の選択(そしておすすめする理由)

Sarah のフィンテックスタートアップの話に戻りましょう。

ベンチマーク結果を見た後、彼女の決断は明確でした。
Token API はプロトタイプには最適でしたが、予測される規模では Model Unit と比較して月額コストが約 2 倍 高くなっていました。PTU(Provisioned Throughput Unit)は Token API コストの 60〜70% 程度という妥当な中間選択肢でしたが、四半期以内に予約済みティアの容量を超えてしまう見込みでした。ベアメタルサーバーは選択肢から外れました。彼女のチームはエンジニア合計 12 名で、誰も GPU クラスターの深夜 3 時のオンコール対応を望んでいなかったからです。

彼らは Model Unit を選択しました。PAI-EAS にデプロイされた 4 つの MU1 ユニット上で、ドメイン固有のカスタムファインチューニング済みチェックポイントを用いた DeepSeek V4-Flash を実行しています。

本番環境での 1 か月間の運用結果は以下の通りです。

  • コスト: 同等の Token API 支出と比較して約 50% の削減
  • レイテンシ: P99 TTFT(Time To First Token)が 4.2 秒から 280 ミリ秒に短縮 — 93% の改善
  • スループット: ピーク処理能力が約 19K TPM から約 304K TPM に増加 — 16 倍の余裕
  • チームのオーバーヘッド: ゼロ。インフラストラクチャチームの人員は一人も増えませんでした。
  • コンプライアンス: すべての顧客データは専用クラスター内に留まります。監査人も満足しています。

ここから得られる教訓は:表示価格だけでなく、チームのオーバーヘッド、機会費用、負荷時のパフォーマンス劣化リスクを含む総合的なコストで判断すべきだ、ということです。すべてを合計すると、Model Unit は大規模運用時に最も安価なオプションであるだけでなく、パフォーマンス、予測可能性、そして安心感を同時に提供できる唯一のオプションなのです。


クイックスタート

ここから始めるために必要なリソースをまとめました。


完全開示および注意事項

このベンチマークは、制御された環境において合成ワークロードを使用して実施されました。実際の結果は、以下の要因によって異なります。

  • 入出力トークンの分布(長い入力対長い出力)
  • キャッシュヒット率(繰り返しのプロンプトは KV キャッシュから大きな恩恵を受けます)
  • アプリケーションと推論エンドポイント間のネットワークレイテンシ
  • モデル量子化設定(FP8 対 INT4 対 FP16)
  • 特定のモデルバージョンと推論エンジンの最適化

記載されている料金は、執筆時点で公開されている情報源に基づく見積もりです。数量割引、地域による変動、およびプロモーションレートが適用される場合があります。契約前に、必ず Alibaba Cloud のアカウントマネージャーに正確な見積もりをご確認ください。


Alibaba Cloud での DeepSeek V4-Flash のデプロイについてご質問がありますか? AI Infra SA チームは毎週評価セッションを実施しています。上記の MU リクエストフォームからお問い合わせください。


この記事は元々英語で書かれました。元の記事は こちら でご確認ください。

0 0 0
Share on

Regional Content Hub

138 posts | 4 followers

You may also like

Comments

Regional Content Hub

138 posts | 4 followers

Related Products