一键部署阶跃星辰 Step1X-Edit模型

更新时间:
复制 MD 格式

Step1X-Edit是阶跃星辰开源的图像编辑模型,结合多模态语言模型与扩散图像解码器,支持多种图像编辑任务。PAI Model Gallery已支持该模型,可一键部署和调用。

模型简介

阶跃星辰开源了图像编辑模型Step1X-Edit。该模型结合多模态大型语言模型(MLLM)与扩散图像解码器(DiT),总参数量达到19B,具备高精度编辑能力和图像保真度,主要优势如下:

  • 语义精准解析:精确理解编辑指令,确保编辑结果符合用户意图。

  • 身份一致性保持:编辑时保持图像中的身份一致性,确保主体特征不受影响。

  • 高精度区域级控制:支持对图像特定区域进行精确编辑,实现细粒度修改。

  • 丰富的任务支持:支持11类高频图像编辑任务,包括文字替换、风格迁移等。

  • 卓越的性能表现:在图像编辑基准GEdit-Bench中,语义一致性、图像质量和综合得分三项指标均表现优异。

更多关于Step1X-Edit信息,请参见stepfun-ai/Step1X-Edit

运行环境要求

部署阶跃星辰 Step1X-Edit模型,建议使用显存容量为48GB或以上的卡型。

模型部署

  1. 进入Model Gallery页面。

    1. 登录PAI控制台

    2. 在顶部左上角根据实际情况选择地域。

    3. 在左侧导航栏选择工作空间列表,单击指定工作空间名称,进入对应工作空间内。

    4. 在左侧导航栏选择快速开始 > Model Gallery

  2. Model Gallery页面右侧的模型列表中,搜索阶跃星辰 Step1X-Edit,并单击该模型卡片,进入模型详情页面。

  3. 单击右上角部署,配置服务名称和资源信息,部署到EAS推理服务。

    在部署配置面板中,部署方式选择单节点标准部署,资源类型选择公共资源,实例数设置为1,单击部署

模型调用

阶跃星辰 Step1X-Edit支持Web应用和API两种调用方式:

Web应用

在模型服务详情页单击右上角查看WEB应用,进入WebUI页面。

上传图片并输入Prompt,单击Generate生图。

WebUI 页面还支持配置 Negative PromptSeedInference Stepscfg_scaleSize_level 等生图参数。

API调用

在模型服务详情页单击查看调用信息,即可获取服务地址和Token信息。

通过以下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_URLEAS_TOKEN替换为实际的服务地址和Token。

相关参考