Platform for AI (PAI) のモデルギャラリーから Step1X-Edit 画像編集モデルを Elastic Algorithm Service (EAS) の推論サービスにデプロイします。
モデル概要
Step1X-Edit は、Stepfun が提供するオープンソースの画像編集モデルです。マルチモーダル大規模言語モデル (MLLM) と拡散イメージデコーダー (DiT) を組み合わせています。190 億のパラメーターを持つ Step1X-Edit は、以下の機能を提供します:
-
正確なセマンティック解析:編集指示を正確に解釈し、ユーザーの意図に合った結果を生成します。
-
ID の一貫性:編集中に被写体の ID を維持し、主要な特徴をそのまま保持します。
-
リージョンレベルのコントロール:きめ細かな修正のために、正確なリージョンレベルの編集をサポートします。
-
幅広いタスク範囲:テキストの置き換えやスタイル変換など、11 の一般的な画像編集タスクをサポートします。
-
優れたベンチマーク結果:GEdit-Bench ベンチマークにおいて、セマンティックの一貫性、画質、および全体的なパフォーマンスで最高のスコアを達成しています。
Step1X-Edit の詳細については、「stepfun-ai/Step1X-Edit」をご参照ください。
リソース要件
Step1X-Edit のデプロイには、48 GB 以上のビデオメモリを搭載した GPU が必要です。
操作手順
モデルギャラリーページに移動します。
PAI コンソールにログインします。
上部メニューの左上で、リージョンを選択します。
左側メニューで Workspaces をクリックし、開きたいワークスペースの名前をクリックします。
左側メニューで、Quick Start > [Model Gallery] を選択します。
-
モデルギャラリーページで、モデルリストで Stepfun Step1X-Edit を検索して、モデルカードをクリックします。
-
右上隅にある Deploy をクリックします。サービス名とリソースを設定して、モデルを EAS にデプロイします。
デプロイ設定パネルで、デプロイ方法を [single-node standard deployment] に、リソースタイプを [public resource] に、インスタンス数を 1 に設定します。次に、 [Deploy] をクリックします。
モデルの呼び出し
デプロイ後、Web アプリケーションまたは API を介して Step1X-Edit を呼び出します。
Web アプリケーション
サービス詳細ページで、右上隅にある View Web App をクリックして Web アプリケーションを開きます。
画像をアップロードし、プロンプトを入力して、 [Generate] をクリックします。
Web UI では、 [Negative Prompt]、[Seed]、[Inference Steps]、[cfg_scale]、[Size_level] などの画像生成パラメーターも設定できます。
API 呼び出し
サービス詳細ページで、 View Call Information をクリックして、エンドポイントとトークンを取得します。
次の Python サンプルコードは、画像編集リクエストを API に送信する例です:
import requests
import time
EAS_URL = "<YOUR_EAS_URL>"
EAS_TOKEN = "<YOUR_EAS_TOKEN>"
class TaskStatus:
PENDING = "pending"
PROCESSING = "processing"
COMPLETED = "completed"
FAILED = "failed"
response = requests.post(
f"{EAS_URL}/generate",
headers={
"Authorization": f"{EAS_TOKEN}"
},
json={
"prompt": "A spaceship orbiting Earth",
"seed": 42,
"neg_prompt": "low quality, blurry",
"infer_steps": 28,
"cfg_scale": 6,
"size":1024,
"image": "<ご自身の画像を Base64 エンコーディングした文字列>"
}
)
task_id = response.json()["task_id"]
print(f"Task ID: {task_id}")
while True:
status_response = requests.get(
f"{EAS_URL}/tasks/{task_id}/status",
headers={
"Authorization": f"{EAS_TOKEN}"
})
status = status_response.json()
print(f"Current status: {status['status']}")
if status["status"] == TaskStatus.COMPLETED:
print("Image ready!")
break
elif status["status"] == TaskStatus.FAILED:
print(f"Failed: {status['error']}")
exit(1)
time.sleep(5)
image_response = requests.get(
f"{EAS_URL}/tasks/{task_id}/image",
headers={
"Authorization": f"{EAS_TOKEN}"
})
with open("generated_image.jpg", "wb") as f:
f.write(image_response.content)
print("Image downloaded successfully!")
EAS_URL と EAS_TOKEN を、実際のエンドポイントとトークンに置き換えてください。