tencent cloud

Tencent Cloud EdgeOne

ドキュメントTencent Cloud EdgeOne

クイックガイド

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-10-15 16:51:01
AI翻訳
本文書は、EdgeOneのエッジ推論においてオープンソースまたは独自モデルをデプロイし、APIを呼び出すまでの一連の手順をご案内することを目的としています。推論サービスの作成、サービス認証情報の管理、推論リクエストの実行、基本的なトラブルシューティングの方法を理解し、エッジ推論のAIモデル機能をアプリケーションに統合できるようになります。ここでは、Llama-3.2-3B-Instruct大規模言語モデルのデプロイを例に、環境準備からモデルの公開・呼び出しまでの全プロセスを説明します。
説明:
エッジ推論は現在、エンタープライズ版プランのみでサポートされています。また、ご利用には許可リストの申請が必要です。ご要望がある場合は、営業担当またはお問い合わせください。
本ガイドではLinux/macOS環境を例として説明します。WindowsユーザーはWSLまたはDocker Desktop環境で操作してください。

前提条件

開始する前に、以下の内容を準備してください:
準備項目
説明
Tencent Cloudアカウント
本人確認が完了しているTencent Cloudのアカウント
企業版プラン
EdgeOne Enterprise Editionプランを購入済みです。
Docker環境
ローカル環境にDocker(推奨バージョン:Docker 20.10以上)がインストール済みで、イメージのビルドとプッシュに使用します。
Tencent Cloud TCR(TCR)
Tencent Cloud TCR(個人版で可)を有効にしており、カスタムイメージの保存に使用します。
GPUサーバー(オプション)
ローカル環境でイメージの実行をテストする場合は、NVIDIA GPUを搭載したマシンが必要です。ビルドのみを行う場合は不要です。

推論サービスの作成と呼び出し

以下の手順では、モデルをオンラインサービスとしてデプロイし、呼び出す方法を説明します。このフローは、従来のモデル(OCRやASRなど)と大規模言語モデル(LLM)、またはテキスト画像生成モデルなどにも適用できます。

ステップ1:Tencent Cloudコンソールにログインする

1. ブラウザでTencent Cloudコンソールにアクセスし、お使いのTencent Cloudアカウントでログインしてください。
2. コンソール上部の検索バーにEdgeOneと入力するか、左側のナビゲーションでEdgeOneを見つけてクリックして入ります。
3. EdgeOneコンソールの左側ナビゲーションで、サービス概要メニューを見つけてクリックし、エッジ推論を選択してエッジ推論管理ページに入ります。

ステップ2:カスタムイメージの準備(Llama-3.2-3Bを例に)

エッジ推論では、コンテナ化方式でモデルをデプロイします。Dockerfileを作成し、モデルファイル、推論フレームワーク、依存関係を1つの完全なDockerイメージにパッケージ化する必要があります。

2.1 プロジェクトディレクトリの作成

ローカルに作業ディレクトリを作成します:
mkdir llama3-edge-inference && cd llama3-edge-inference

2.2 Dockerfileの作成

プロジェクトディレクトリにDockerfileファイルを作成します。以下の例では、推論フレームワークとしてvLLMを使用し、ModelScopeからLlama-3.2-3B-Instructモデルをダウンロードします:
# ============================================================
# Dockerfile for Llama3.2-3B Model with vLLM 0.6.3.post1
# ============================================================

vLLM公式OpenAI互換イメージをベースイメージとして使用します。
FROM vllm/vllm-openai:v0.6.3.post1

環境変数を設定し、HuggingFace Hubのオンライン検証をスキップします(オフラインモード)。
ENV HF_HUB_OFFLINE=1
ENV HF_HOME=/data/models
ENV TRANSFORMERS_CACHE=/data/models

modelscopeをインストールしてモデルをダウンロードします(国内ミラーソースを使用して高速化)。
RUN pip3 install --no-cache-dir modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple

モデルディレクトリを作成し、モデルファイルをダウンロードします。
RUN mkdir -p /data/models/LLM-Research/Llama-3.2-3B-Instruct && \\
python3 -c "from modelscope import snapshot_download; snapshot_download('LLM-Research/Llama-3.2-3B-Instruct', local_dir='/data/models/LLM-Research/Llama-3.2-3B-Instruct')"

推論サービスポートを公開します。
EXPOSE 8000

}
# --host 0.0.0.0 すべてのネットワークインターフェースをリッスンします。
# --port 8000 サービスがリッスンするポート。
# --model モデルファイルのパス。
# --trust-remote-code リモートコードを信頼します(一部のモデルで必要です)。
# --dtype half 半精度推論を使用し、GPUメモリ使用量を削減します。
# --max-model-len 8192 最大コンテキスト長。
CMD ["--host", "0.0.0.0", \\
"--port", "8000", \\
"--model", "/data/models/LLM-Research/Llama-3.2-3B-Instruct", \\
"--trust-remote-code", \\
"--dtype", "half", \\
"--max-model-len", "8192"]
主要パラメータの説明:
パラメータ
説明
FROM vllm/vllm-openai:v0.6.3.post1
ベースイメージには、vLLM推論エンジンおよびOpenAI互換APIインターフェースがあらかじめ組み込まれています。
HF_HUB_OFFLINE=1
オンラインモデル検証を無効にし、コンテナが外部ネットワークのない環境でも起動できるようにします。
--dtype half
FP16半精度推論を使用し、Llama-3.2-3Bモデルには約6GBのビデオメモリが必要です。
--max-model-len 8192
最大コンテキストウィンドウを8192トークンに設定します。
説明:
実際のモデルと推論フレームワークに応じてDockerfileを調整してください。他のフレームワーク(例えばSGLangなど)を使用する場合は、対応するフレームワークのコンテナ化ドキュメントを参照してください。

ステップ3:Dockerイメージのビルド

3.1 イメージのビルド

Dockerfileがあるディレクトリで以下のコマンドを実行してイメージを構築します:
docker build -t llama3-3b-vllm:v1.0 .
ビルドプロセスは以下の操作を順番に実行します:
1. vLLMのベースイメージをプルします。
2. ModelScopeの依存関係をインストールします。
3. Llama-3.2-3B-Instructモデルファイルをダウンロードします(約6GB、しばらくお待ちください)。
説明:
初回ビルドには10~30分かかる場合があります。ネットワーク速度によって異なります。ネットワークが安定した環境で実行することをお勧めします。ネットワークの問題でダウンロードに失敗した場合は、ビルドコマンドを再実行できます。Dockerは前回中断したステップから続行します。Dockerチュートリアルの詳細については、公式Dockerチュートリアルをご覧ください。

3.2 イメージの検証(オプション)

ビルド完了後、イメージ情報を確認できます:
docker images | grep llama3-3b-vllm
予想される出力:
llama3-3b-vllm v1.0 xxxxxxxxxxxx xx minutes ago 約15GB
お手元にGPU環境がある場合は、以下のコマンドを実行してイメージが正常に動作するかテストできます:
docker run --gpus all -p 8000:8000 llama3-3b-vllm:v1.0
サービスが起動完了するまで待ちます(ログにUvicorn running on http://0.0.0.0:8000が表示されます)。別のターミナルウィンドウでテストリクエストを実行します:
curl http://localhost:8000/v1/chat/completions \\
-H "Content-Type: application/json" \\
-d '{
"model": "/data/models/LLM-Research/Llama-3.2-3B-Instruct",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 50
}'

ステップ4:Tencent Cloud TCRへのイメージのプッシュ

ビルドしたイメージは、エッジ推論プラットフォームがプルおよびデプロイできるように、Tencent Cloudコンテナイメージサービス(TCR)にアップロードする必要があります。
説明:
1. TCR標準版、基本版、またはアドバンスド版のインスタンスを使用する場合は、アクセス制御 > パブリックアクセスでパブリックアクセス入口を有効にする必要があります。エッジ推論はパブリックネットワーク経由でイメージをプルする必要があります。
2. 個人版イメージリポジトリを使用する場合、インスタンスを作成する必要はなく、デフォルトでパブリックアクセスをサポートします。

4.1 TCRの有効化

TCRをまだ有効化していない場合は、コンテナイメージサービスクイックスタートをご参照ください。
2. 名前空間を作成します(例:edge-inference)。
3. 名前空間の下にイメージリポジトリを作成します(例:llama3-3b-vllm)。

4.2 TCRへのログイン

ローカルターミナルで以下のコマンドを実行してTCRにログインします(実際のインスタンス情報に置き換えてください):
# 個人版 TCR ログイン
docker login ccr.ccs.tencentyun.com --username=<Tencent CloudアカウントID>
システムからパスワードの入力を求められます。TCRコンソールで設定したイメージリポジトリのパスワードを入力してください。
説明:
企業版TCRを使用する場合、ログインアドレスの形式は<インスタンス名>.tencentcloudcr.comです。具体的なアドレスはTCRコンソールでご確認ください。

4.3 イメージのタグ付けとプッシュ

# イメージにタグを付与します(実際のリポジトリアドレスに置き換えてください)
docker tag llama3-3b-vllm:v1.0 ccr.ccs.tencentyun.com/edge-inference/llama3-3b-vllm:v1.0

# TCRへのイメージのプッシュ
docker push ccr.ccs.tencentyun.com/edge-inference/llama3-3b-vllm:v1.0
説明:
モデルイメージが大きいため(約15GB)、プッシュ時間は上り帯域幅に依存します。帯域幅が十分な環境で操作することを推奨します。

4.4 アップロード成功の確認

TCRコンソールにログインし、対応するイメージリポジトリでイメージが正常にアップロードされたことを確認します。v1.0タグのイメージを確認できます。

ステップ5:プロジェクトの作成

プロジェクトはエッジ推論の第一レベルのリソースであり、複数の推論サービスを整理および管理するために使用されます。1つのプロジェクトには複数の推論サービスを含めることができ、プロジェクトにTagをバインドすることで権限制御を実現することもできます。
1. EdgeOneコンソールのエッジ推論ページで、プロジェクトを作成をクリックします。

プロジェクトを作成します。


2. プロジェクト情報を入力します:
プロジェクト名:プロジェクト名を入力します(例:llm-inference-project)
プランのバインド:ご注文済みの企業版プランを選択します。

プロジェクト情報を入力します。


3. プロジェクトの作成が完了したら、プロジェクト名をクリックしてプロジェクト詳細ページに移動すると、推論サービスの作成を開始できます。

ステップ6:推論サービスの作成

サービスはエッジ推論のコアユニットです。サービスを作成するとは、アップロードしたイメージをコンテナ形式でエッジノードにデプロイすることを意味し、プラットフォームは公衆ネットワークからアクセス可能なサービスアドレスを提供します。
作成済みのプロジェクトで、サービスを作成をクリックします。

サービスを作成します。



6.1 基本設定

設定項目
説明
サンプル値
サービス名
サービスの一意の識別子です。作成後に変更することはできません。
llama3-3b-service
説明
サービスの用途説明です。最大60文字まで入力できます。
Llama-3.2-3B 推論サービス

6.2 イメージ設定

設定項目
説明
サンプル値
イメージ
お客様のアカウントでTCRにアップロード済みのイメージを選択します。
ccr.ccs.tencentyun.com/edge-inference/llama3-3b-vllm:v1.0
起動コマンド
コンテナ起動時に実行するコマンドです。入力しない場合、イメージ内のENTRYPOINT/CMDが使用されます。
空欄にします(Dockerfileで定義済みのCMDを使用します)。
リッスンポート
お客様の推論サービスHTTP Serverがリッスンするポート
8000
環境変数
ランタイム環境変数の設定
変数名:HF_HOME、変数値:/data/models
リクエストパス
クライアントが推論サービスを呼び出すAPIパス
/v1/chat/completions
起動コマンドについて:
この例では、DockerfileでCMDにより起動パラメータが設定されているため、空のままにできます。デフォルトパラメータを上書きする必要がある場合は、完全な起動コマンドを入力できます。例:
python3 -m vllm.entrypoints.openai.api_server --host 0.0.0.0 --port 8000 --model /data/models/LLM-Research/Llama-3.2-3B-Instruct --trust-remote-code --dtype half --max-model-len 8192

6.3 リソース設定

設定項目
説明
リソースを選択します。
現在、入门型と基础型の2種類のGPUリソース仕様を提供しています。選択後は変更できません。
注意:
選択したインスタンスタイプ(特にGPUメモリ)は、モデル実行の要件を満たす必要があります。Llama-3.2-3BはFP16推論時に約6GBのメモリが必要です。メモリ8GB以上のタイプを選択してください。そうしないと、メモリ不足(OOM)によりデプロイが失敗する可能性があります。

6.4 詳細設定

設定項目
説明
推奨設定
スケールイン・スケールアウト
自動:リクエスト量に応じて自動的にスケールイン・スケールアウトします。
手動:インスタンス数を固定し、常駐稼働して継続的に課金されます。
自動を選択することをお勧めします。コストを節約できます。
同時実行数
単一インスタンスにおける同時リクエスト数の上限
LLM推論では、やや大きめに設定することをお勧めします。画像生成などの長時間タスクでは、同時処理の上限を小さくする必要がある場合があります。モデルサイズとビデオメモリによって異なります。

6.5 作成の完了

上記の設定が完了したら、作成をクリックします。システムがサービスのデプロイを開始します。サービスステータスが「デプロイ中」から「実行中」に変わるまでお待ちください。これはサービスが準備完了であることを示します。
説明:
初回デプロイではイメージをエッジノードにプルする必要があります。イメージが大きいため、デプロイ時間は5~15分かかる場合があります。サービスの詳細ページでデプロイログを確認できます。

ステップ7:API Tokenの作成とサービス情報の取得

サービスが正常に稼働した後、認証用のAPI Tokenを作成し、サービスのアクセスアドレスを取得する必要があります。

7.1 サービス詳細への移動

サービス名をクリックしてサービス詳細ページに入ります。基本情報で次を確認できます:
サービス状態:「実行中」と表示される必要があります。
アクセスアドレス:プラットフォームが割り当てるパブリックアクセスURL(例:https://your-service-id.edgeone-infer.com)。
リクエスト例:プラットフォームが自動生成した呼び出し例です。

7.2 API Tokenの作成

エッジ推論のすべてのリクエストはBearer Tokenによる認証が必要です。そのため、最初にAPI Tokenを作成する必要があります。
1. サービス詳細のリクエスト例をクリックします。

リクエスト例


2. API Tokenを作成をクリックします。Token名を入力します(例:my-first-token)。システムが自動的にAPI Tokenを生成します。

Tokenを作成します。


3. 作成が完了すると、Tokenは自動的にリクエスト例に反映されます。左側メニューのAPI TokenページですべてのTokenを一元管理することもできます。
説明:
API Tokenは推論サービスにアクセスするための重要な認証情報です。大切に保管してください。Tokenはデフォルトでマスク形式で表示され、クリックすると全内容をコピーできます。公開の場でTokenを漏洩しないでください。

ステップ8:モデルサービスの呼び出し

サービスのデプロイが成功し、API Tokenを取得した後、HTTPS APIを通じてモデルを呼び出すことができます。エッジ推論は同期と非同期の2つの呼び出しモードをサポートしており、リクエストヘッダーWork-Modeを通じて切り替えることで、さまざまなビジネスシーンに適応できます。
呼び出しモード
Work-Mode の値
レスポンス方法
適用シナリオ
同期(デフォルト)
指定しない、またはsync
リクエストはブロックされ、完全な推論結果が直接返されます。
リアルタイム対話、低遅延インタラクション、短い入出力のシナリオ
非同期
async
TaskIdを直ちに返し、クエリインターフェースを通じて結果をポーリングする必要があります。
長文テキスト生成、バッチタスク、ゲートウェイタイムアウトのリスクを回避するシナリオ

8.1 同期呼び出し

同期モードでは、サービス側は推論完了後にOpenAI互換形式の完全なレスポンスを直接返します。以下の例のYOUR_SERVICE_URLとYOUR_BEARER_TOKENを実際の情報に置き換えてください:
curl https://YOUR_SERVICE_URL/v1/chat/completions \\
-H "Authorization: Bearer YOUR_BEARER_TOKEN" \\
-H "Content-Type: application/json" \\
-d '{
"model": "/data/models/LLM-Research/Llama-3.2-3B-Instruct",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello, who are you?"}
],
"max_tokens": 256,
"temperature": 0.7
}'

想定されるレスポンス例:
{
"id": "cmpl-xxxxxxxx",
"object": "chat.completion",
"created": 1739260800,
"model": "/data/models/LLM-Research/Llama-3.2-3B-Instruct",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! I'm Llama, a helpful AI assistant developed by Meta. I'm here to help you with questions, provide information, and assist with various tasks. How can I help you today?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 42,
"total_tokens": 67
}
}

リクエストパラメータの説明

パラメータ
タイプ
必須
説明
model
string
はい
モデルパス、コンテナ内のモデルファイルパスと一致します。
messages
array
はい
対話メッセージリストです。role(system/user/assistant)とcontentが含まれます。
max_tokens
integer
いいえ
最大生成token数です。デフォルトはモデルによって決定されます。
temperature
float
いいえ
生成温度です。範囲は0~2で、値が高いほど出力はランダムになります。デフォルトは1.0です。
top_p
float
いいえ
核サンプリングパラメータです。範囲は0~1で、デフォルトは1.0です。
stream
boolean
いいえ
ストリーミング出力を有効にするかどうかです。デフォルトはfalseです。
stop
string/array
いいえ
生成を停止するマーカー語

8.2 非同期呼び出し

非同期モードは長文テキスト生成、バッチタスクなどのシーンに適しており、同期呼び出しがゲートウェイタイムアウトによって失敗することを効果的に回避できます。非同期呼び出しは、タスク送信と結果照会の2つのステップに分かれます。

8.2.1 非同期推論リクエストの送信

リクエストを送信する際には、リクエストヘッダーにWork-Mode: asyncを含める必要があります。サービス側は推論結果をすぐには返さず、タスクID(TaskId)を返します。
リクエストインターフェース:
項目
説明
URL
例:https://YOUR_SERVICE_URL/v1/chat/completions
Method
POST
Authorization
Bearer YOUR_BEARER_TOKEN
Content-Type
application/json
Work-Mode
async(必須、非同期モードを表します)
curl例:
curl -sS -X POST \\
"https://YOUR_SERVICE_URL/v1/chat/completions" \\
-H "Authorization: Bearer YOUR_BEARER_TOKEN" \\
-H "Content-Type: application/json" \\
-H "Work-Mode: async" \\
-d '{
"model": "/data/models/LLM-Research/Llama-3.2-3B-Instruct",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello, who are you?"}
],
"max_tokens": 256,
"temperature": 0.7
}'

戻り値の例:
{
"TaskId": "YOUR_TASK_ID",
"Status": "PENDING"
}

説明:
TaskIdを取得した後、それを使用してクエリインターフェースを呼び出し、最終的な推論結果を取得する必要があります。

8.2.2 非同期タスク結果の照会

タスクIDを通じてタスクの状態と最終結果を照会します。照会時にはリクエストヘッダーにWork-Infer-Action: queryを含める必要があります。
リクエストインターフェース:
項目
説明
URL
例:https://YOUR_SERVICE_URL/query/YOUR_TASK_ID
Method
GET
Authorization
Bearer YOUR_BEARER_TOKEN
Work-Infer-Action
query(必須項目です。クエリアクションを示します。)
curl例:
curl -sS -X GET \\
"https://YOUR_SERVICE_URL/query/YOUR_TASK_ID" \\
-H "Authorization: Bearer YOUR_BEARER_TOKEN" \\
-H "Work-Infer-Action: query"

タスク状態の説明:
Status
意味
後続アクション
PENDING
タスクは送信され、キューで待機しています。
ポーリングを継続してください。
RUNNING
タスクは推論中です。
ポーリングを継続してください。
SUCCEEDED
タスクは正常に実行されました。Responseフィールドに完全な推論結果が返されます。
結果を読み取り、ポーリングを停止してください。
FAILED
タスクの実行に失敗しました。Errorフィールドにエラー原因が返されます。
入力を確認するか、再試行してください。
タスク成功レスポンス例:
{
"TaskId": "YOUR_TASK_ID",
"Status": "SUCCEEDED",
"Response": {
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1746789012,
"model": "/data/models/LLM-Research/Llama-3.2-3B-Instruct",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! I'm Llama, a helpful AI assistant developed by Meta."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 42,
"total_tokens": 67
}
}
}

タスク失敗レスポンス例:
{
"TaskId": "YOUR_TASK_ID",
"Status": "FAILED",
"Error": "エラー原因の説明"
}


8.2.3 Python完全な例(送信+ポーリング照会)

以下は、非同期タスクの送信とポーリング照会プロセスを示す完全なPython例です。
import time
import requests
BASE = "https://YOUR_SERVICE_URL"
TOKEN = "YOUR_BEARER_TOKEN"
MODEL = "/data/models/LLM-Research/Llama-3.2-3B-Instruct"
def submit_async():
url = f"{BASE}/v1/chat/completions"
headers = {
"Authorization": f"Bearer {TOKEN}",
"Content-Type": "application/json",
"Work-Mode": "async",
}
payload = {
"model": MODEL,
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello, who are you?"},
],
"max_tokens": 256,
"temperature": 0.7,
}
r = requests.post(url, headers=headers, json=payload, timeout=30)
r.raise_for_status()
return r.json()["TaskId"]
def query_task(task_id, timeout=120, interval=1.0):
url = f"{BASE}/query/{task_id}"
headers = {
"Authorization": f"Bearer {TOKEN}",
"Work-Infer-Action": "query",
}
deadline = time.time() + timeout
while time.time() < deadline:
r = requests.get(url, headers=headers, timeout=15)
r.raise_for_status()
data = r.json()
status = data.get("Status")
if status == "SUCCEEDED":
return data
if status == "FAILED":
raise RuntimeError(f"task failed: {data}")
time.sleep(interval)
raise TimeoutError(f"task {task_id} timeout")
if __name__ == "__main__":
task_id = submit_async()
print("submitted:", task_id)
result = query_task(task_id)
print(result["Response"]["choices"][0]["message"]["content"])

説明:
非同期タスクでは、適切なポーリング間隔(1~3秒を推奨)を設定することをお勧めします。頻繁なクエリによる余分なオーバーヘッドを避けてください。
非同期モードは、長い推論タスクの処理に適しており、同期呼び出しがゲートウェイタイムアウトによって失敗することを効果的に回避できます。

よくある問題の切り分け

問題
考えられる原因
解決方法
サービスステータスは継続して「デプロイ中」と表示されています。
イメージが大きすぎるため、プルに時間がかかります。
15~30分間待機します。イメージがTCRに正しくアップロードされているか確認します。
サービスステータスに「デプロイ失敗」と表示されます。
GPUメモリ不足またはイメージ起動異常
リソース仕様がモデル要件を満たしているか確認します。デプロイログを確認してエラーを特定します。
APIリクエストが401を返します。
Tokenが無効または期限切れです。
Authorizationヘッダーが正しいかどうかを確認します。Token形式がBearer <token>であることを確認します。
APIリクエストが502/504を返します。
サービスが準備できていないか、リクエストがタイムアウトしました。
サービス状態が「実行中」であることを確認します。タイムアウト時間を適宜延長します。
OOMエラーが返されます。
GPUメモリ不足
--max-model-lenパラメータ値を下げます。より高规格のGPUリソースを選択します。










ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック