PAI のモデルギャラリーから Step1X-Edit 画像編集モデルを Elastic Algorithm Service (EAS) の推論サービスにデプロイします。
モデルの概要
Step1X-Edit は、Stepfun が提供するオープンソースの画像編集モデルです。マルチモーダル大規模言語モデル (MLLM) と拡散画像デコーダー (DiT) を組み合わせています。190 億のパラメーターを持つ Step1X-Edit は、次の機能を提供します:
-
高精度なセマンティック解析:編集指示を正確に解釈し、ユーザーの意図に合致する結果を生成します。
-
同一性の保持:編集時に被写体の同一性を維持し、主要な特徴を保持します。
-
領域レベルの制御:領域レベルの精密な編集に対応し、きめ細かな変更を行えます。
-
幅広いタスク対応:テキスト置換やスタイル変換など、一般的な 11 種類の画像編集タスクに対応します。
-
優れたベンチマーク結果:GEdit-Bench ベンチマークにおいて、セマンティック一貫性、画像品質、総合性能で最高スコアを達成します。
Step1X-Edit の詳細については、「stepfun-ai/Step1X-Edit」をご参照ください。
リソース要件
Step1X-Edit をデプロイするには、少なくとも 48 GB のビデオメモリを搭載した GPU が必要です。
手順
モデルギャラリーページに移動します。
PAI コンソールにログインします。
上部メニューの左上で、リージョンを選択します。
左側メニューで ワークスペースリスト をクリックし、開きたいワークスペースの名前をクリックします。
左側メニューで、クイックスタート > [Model Gallery] を選択します。
-
モデルギャラリーページで、モデルリストで Stepfun Step1X-Edit を検索し、モデルカードをクリックします。
-
モデル詳細ページの右上隅にある デプロイメント をクリックします。サービス名とリソース設定を構成して、モデルを Elastic Algorithm Service (EAS) にデプロイします。
デプロイ設定パネルで、[Deployment Method] を [single-node standard deployment] に、[Resource Type] を [public resource] に設定し、[Instance Count] を 1 に設定します。次に、[Deploy] をクリックします。
モデルの呼び出し
デプロイ後、Web アプリケーションまたは API で Step1X-Edit を呼び出すことができます。
Web アプリケーション
サービス詳細ページで、右上隅にある WEB アプリケーションの表示 をクリックして Web アプリケーションを開きます。
画像をアップロードし、プロンプトを入力して、[Generate] をクリックします。
Web UI では、[Negative Prompt]、[Seed]、[Inference Steps]、[cfg_scale]、[Size_level] などの画像生成パラメーターも設定できます。
API 呼び出し
サービス詳細ページで、エンドポイント情報の表示 をクリックして、エンドポイントとトークンを取得します。
次の 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 を、実際のエンドポイントとトークンに置き換えてください。