You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何在Azure将神经机器翻译模型Checkpoints部署为端点与微服务

部署微调后的神经机器翻译(NMT)模型到Azure ML端点

一、先整理Checkpoints为可部署格式

微调后的Hugging Face NMT模型checkpoints包含多文件,但无需额外合并,直接通过transformers库即可加载。如果需要统一管理,可执行以下代码将其保存为标准部署格式:

from transformers import AutoModelForSeq2SeqLM, AutoTokenizer

# 从checkpoints文件夹加载模型和tokenizer
model = AutoModelForSeq2SeqLM.from_pretrained("./your-checkpoint-folder")
tokenizer = AutoTokenizer.from_pretrained("./your-checkpoint-folder")

# 保存为统一的可部署模型文件夹(可选步骤)
model.save_pretrained("./deployable-nmt-model")
tokenizer.save_pretrained("./deployable-nmt-model")

二、编写评分脚本(score.py)

这是Azure ML处理请求的核心脚本,必须包含init()(加载模型)和run()(处理预测)两个函数:

import json
import torch
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer

model = None
tokenizer = None

def init():
    global model, tokenizer
    # Azure ML默认的模型挂载路径:./azureml-models/模型名/版本号
    model_path = "./azureml-models/your-nmt-model/1"
    model = AutoModelForSeq2SeqLM.from_pretrained(model_path)
    tokenizer = AutoTokenizer.from_pretrained(model_path)
    # 若使用GPU实例,添加:model.to("cuda")

def run(raw_data):
    try:
        data = json.loads(raw_data)["input"]
        inputs = tokenizer(data, return_tensors="pt", padding=True, truncation=True)
        # 若使用GPU,添加:inputs = {k: v.to("cuda") for k, v in inputs.items()}
        outputs = model.generate(**inputs, max_length=128)
        translations = tokenizer.batch_decode(outputs, skip_special_tokens=True)
        return json.dumps({"translations": translations})
    except Exception as e:
        return json.dumps({"error": str(e)})

三、配置环境依赖(conda.yml)

创建conda环境文件,指定模型运行所需的依赖包:

name: nmt-env
channels:
  - conda-forge
dependencies:
  - python=3.8
  - pip:
      - torch==2.0.1
      - transformers==4.30.2
      - azureml-defaults

四、Azure ML部署实操步骤

1. 注册模型

通过Azure CLI将模型文件夹注册到工作区:

az ml model register --name your-nmt-model --path ./deployable-nmt-model --resource-group your-rg --workspace-name your-ws

2. 创建在线端点

az ml online-endpoint create --name nmt-endpoint --resource-group your-rg --workspace-name your-ws

3. 编写部署配置(deployment.yml)

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: nmt-deployment
endpoint_name: nmt-endpoint
model: azureml:your-nmt-model:1
environment:
  conda_file: conda.yml
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
code_configuration:
  code: ./  # 指向包含score.py的文件夹路径
  scoring_script: score.py
instance_type: Standard_DS3_v2  # 模型较大时可换GPU实例如Standard_NC6
instance_count: 1

4. 部署模型到端点

az ml online-deployment create --file deployment.yml --resource-group your-rg --workspace-name your-ws --all-traffic

五、测试端点

通过curl调用端点验证部署:

curl -X POST https://nmt-endpoint.your-region.inference.ml.azure.com/score \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(az ml online-endpoint get-credentials --name nmt-endpoint --resource-group your-rg --workspace-name your-ws --query primaryKey -o tsv)" \
-d '{"input": ["Hello world", "This is a test sentence"]}'

关键注意事项

  • GPU加速:若使用GPU实例,需在score.py中添加模型和张量移至CUDA的代码,同时安装对应CUDA版本的PyTorch。
  • Checkpoints兼容性:确保checkpoints文件夹包含config.json、pytorch_model.bin(或分片文件)、tokenizer相关文件,from_pretrained会自动处理分片模型。
  • 实例选型:根据模型大小选择合适的计算实例,避免因资源不足导致部署失败。

内容的提问来源于stack exchange,提问作者Sakayo Toadoum Sari VII

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 14:33:32