[Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 现在推出了经过改进的模型部署体验,能够帮助您更快地部署传统的[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)(ML)模型和基础模型(FM)。
作为数据科学家或[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)从业者,您现在可以使用 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Python SDK 中新提供的 `ModelBuilder` 类打包模型,执行本地推理以检验运行时错误,并将模型从本地 IDE 或 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Studio 笔记本部署到 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail)。
在 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Studio 中,新的交互式模型部署工作流程将为您提供步骤指南,指导您选择实例类型,以获得最佳端点配置。[Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Studio 还提供了其他接口,用于在已部署的端点上添加模型、测试推理和启用自动扩缩策略。
### **Amazon SageMaker Python SDK 中的新工具**
[Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Python SDK 更新了新的工具,包括 `ModelBuilder` 类和 `SchemaBuilder` 类,它们将跨越[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)框架和模型服务器,为将模型转换为 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 可部署模型提供统一的体验。模型构建器会通过选择兼容的 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 容器,并从开发环境中捕获依赖关系,自动完成模型的部署。架构构建器可帮助您管理模型输入和输出的序列化与反序列化任务。您可以使用这些工具在本地开发环境部署模型,对其进行试验,修复所有运行时错误,并且在准备就绪后,您仅需使用一行代码,即可从本地测试过渡到在 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 上部署模型。
![image.png](https://dev-media.amazoncloud.cn/655429a2117f448696a85b95cfab6512_image.png "image.png")
我将向您演示具体做法。在以下示例中,我选择了来自 Hugging Face 模型中心的 Falcon-7B 模型。我首先会在本地部署模型,运行示例推理,并执行本地基准测试,以找到最佳配置,最后将模型与推荐的配置部署到 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail)。
首先,导入更新后的 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Python SDK,并定义示例模型输入和输出,使其与所选模型的提示格式相匹配。
```Python
import sagemaker
from sagemaker.serve.builder.model_builder import ModelBuilder
from sagemaker.serve.builder.schema_builder import SchemaBuilder
from sagemaker.serve import Mode
prompt = "Falcons are"
response = "Falcons are small to medium-sized birds of prey related to hawks and eagles."
sample_input = {
"inputs": prompt,
"parameters": {"max_new_tokens": 32}
}
sample_output = [{"generated_text": response}]
```
然后,使用 Hugging Face 模型 ID 创建 `ModelBuilder` 实例,使用示例模型输入和输出创建 `SchemaBuilder` 实例,再定义本地模型路径,并将模式设置为 `LOCAL_CONTAINER` ,以将模型部署在本地。架构构建器会生成所需的函数,用于序列化和反序列化模型的输入和输出。
```Python
model_builder = ModelBuilder(
model="tiiuae/falcon-7b",
schema_builder=SchemaBuilder(sample_input, sample_output),
model_path="/path/to/falcon-7b",
mode=Mode.LOCAL_CONTAINER,
env_vars={"HF_TRUST_REMOTE_CODE": "True"}
)
```
接下来,调用 `build()` ,将 PyTorch 模型转换为 SageMaker 可部署模型。构建函数会生成模型服务器所需的构件,包括 `inferency.py` 和 `serving.properties` 文件。
```Python
local_mode_model = model_builder.build()
```
对于 Falcon 等 FM,您可以选择在本地容器模式下运行 `tune()` ,该模式将执行本地基准测试,以找到模型服务的最佳配置。这包括张量并行度,如果您的环境有多个 GPU 可用,它将指定要使用的 GPU 数量。准备就绪后,调用 `deploy()` ,在本地开发环境中部署模型。
```Python
tuned_model = local_mode_model.tune()
tuned_model.deploy()
```
我们来测试模型。
```js
updated_sample_input = model_builder.schema_builder.sample_input
print(updated_sample_input)
{'inputs': 'Falcons are',
'parameters': {'max_new_tokens': 32}}
local_tuned_predictor.predict(updated_sample_input)[0]["generated_text"]
```
在我的演示中,模型将返回以下响应:
```js
a type of bird that are known for their sharp talons and powerful beaks.They are also known for their ability to fly at high speeds […]
```
准备好在 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 上部署模型时,请再次调用 `deploy()` ,将模式设置为 `SAGEMAKLER_ENDPOINT` ,并提供具有适当权限的 Amazon Identity and Access Management(IAM)角色。
```Python
sm_predictor = tuned_model.deploy(
mode=Mode.SAGEMAKER_ENDPOINT,
role="arn:aws:iam::012345678910:role/role_name"
)
```
这将开始在 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 端点上部署您的模型。端点准备就绪后,就可以进行预测了。
```Python
new_input = {'inputs': 'Eagles are','parameters': {'max_new_tokens': 32}}
sm_predictor.predict(new_input)[0]["generated_text"])
```
### **全新的 Amazon SageMaker Studio 模型部署体验**
通过从模型登录页面或 [Amazon SageMaker JumpStart](https://aws.amazon.com/cn/sagemaker/jumpstart/?trk=cndc-detail) 模型详细信息页面选择一个或多个要部署的模型,或从端点详细信息页面创建新的端点,您将可以启动新的交互式模型部署工作流程。
![image.png](https://dev-media.amazoncloud.cn/a962eed276e440168b6f0932fecb0fb4_image.png "image.png")
新的工作流程可帮助您以最少的输入快速部署所选模型。如果您使用 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Inference Recommender 对模型进行基准测试,其下拉列表将显示基于该基准测试的实例推荐。
![image.png](https://dev-media.amazoncloud.cn/596b8e82ed564ecebba5426a594da1d1_image.png "image.png")
如果未对模型进行基准测试,[Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 将根据其自身的启发式方法,预测可能合适的潜在实例,显示在下拉列表中。对于一些最受欢迎的 SageMaker JumpStart 模型,您将看到经过亚马逊云科技预先测试的最佳实例类型。对于其他模型,您将看到通常推荐的实例类型。例如,如果我在 SageMaker JumpStart 中选择 Falcon 40B Instruct 模型,我可以看到推荐的实例类型。
![image.png](https://dev-media.amazoncloud.cn/3833d20ad3c840fa9e0deddc154a4cc0_image.png "image.png")
![image.png](https://dev-media.amazoncloud.cn/5d5902f1a02549bc9d57a1a10dfe176e_image.png "image.png")
然而,如果我想根据成本或性能优化部署,以满足特定用例的需求,我可以打开**备用配置**面板查看更多选项,这些选项基于基准测试前的数据。
![image.png](https://dev-media.amazoncloud.cn/ce3ce15442dc496699f70a3f42768270_image.png "image.png")
部署后,您可以测试推理,或管理自动扩缩策略。
![image.png](https://dev-media.amazoncloud.cn/0930a59fabbf412db697284e62b30632_image.png "image.png")
### **注意事项**
这里需要牢记以下几点:
**支持的[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)模型和框架** – 在发布时,新的 SageMaker Python SDK 工具支持 XGBoost 和 PyTorch 模型的模型部署。您可以使用 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) LMI 容器或基于 Hugging Face TGI 的容器指定 Hugging Face 模型 ID 或 [Amazon SageMaker JumpStart](https://aws.amazon.com/cn/sagemaker/jumpstart/?trk=cndc-detail) 模型 ID,实现对 FM 的部署。您也可以自带容器(BYOC),或使用 Triton 模型服务器部署 ONNX 格式的模型。
### **现已推出**
这套新工具现已在所有可以使用 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 实时推理的区域推出。使用这套新工具不会产生任何费用,您只需为创建的任何 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 基础资源付费。
### **了解详情**
* [Amazon SageMaker 模型部署](https://aws.amazon.com/sagemaker/deploy/?trk=cndc-detail)
* [Amazon SageMaker 开发人员指南](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints.html?trk=cndc-detail)
### **开始使用**
立即在亚马逊云科技管理控制台中探索全新的 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 模型部署体验!
> **了解所有 re:Invent 2023 热门发布产品,请扫描下方二维码:**
![image.png](https://dev-media.amazoncloud.cn/9493c521d44046f2a7e159ae421e52cc_image.png "image.png")
![开发者尾巴.gif](https://dev-media.amazoncloud.cn/bf04c5c24087406b89f898e98e507122_%E5%BC%80%E5%8F%91%E8%80%85%E5%B0%BE%E5%B7%B4.gif "开发者尾巴.gif")