在亚马逊云科技上一键自动部署Falcon3大语言模型
由TII(阿布扎比技术创新研究所)开发的全新的Falcon 3系列模型,已经在亚马逊云科技的模型自动化快速部署功能 - Amazon SageMaker JumpStart上可以使用了。在本文中小李哥就将带大家探训如何在Amazon SageMaker AI上高效部署Falcon3模型。
Falcon 3 系列模型概述
Falcon 3系列由阿布扎比技术创新研究所(TII)研发,它的出现标志着开源语言模型的重大进步。Falcon系列包含五种基础模型,参数规模从1B(10 亿)到10B(100 亿)不等,该模型专门提升了科学、数学和编程能力,帮助开发者满足日常场景的需求。目前该系列包括的类型有Falcon3-1B-Base、Falcon3-3B-Base、Falcon3-Mamba-7B-Base、Falcon3-7B-Base和Falcon3-10B-Base 以及他们Instruct指令微调优化输出的版本。
该系列模型在多个技术方向进行了创新性,例如高效的预训练技术、经过优化的推理能力,以及 知识蒸馏,使较小的模型具备更优性能。值得注意的是Falcon3-10B-Base模型在零样本(zero-shot)和少样本(few-shot)任务中,,目前拥有13B以下小模型最先进的性能。此外Falcon 3系列还提供了多种指令微调版本,如Instruct模型,并支持多种量化格式,使其能够有更加广泛的应用场景。像我们之前介绍的,目前SageMaker JumpStart提供以下基础版本和Instruct版本:
- Falcon3-3B
- Falcon3-7B
- Falcon3-10B
- Falcon3-1B-Instruct
使用 SageMaker JumpStart 开始部署
SageMaker JumpStart是亚马逊云科技平台上的机器学习训练、部署中心,可帮助加速各位开发者的开发效率。借助SageMaker JumpStart,开发者们可以评估、比较和选择最合适自己要求的预训练的基础模型,包括Falcon 3系列模型。这些模型可根据大家的需求和私有数据进行定制。在 SageMaker JumpStart中部署Falcon 3模型有两种方法,分别是:使用SageMaker JumpStart UI(可视化界面)和使用SageMaker Python SDK进行编程部署。接下来,我们将分别介绍这两种方法,帮助大家选择最适合的方式。
通过 SageMaker JumpStart UI 部署 Falcon 3
1. 我们可以按照以下步骤,通过JumpStart UI部署Falcon 3:
进入SageMaker JumpStart:在Amazon SageMaker统一控制台(Unified Studio)中,拉取Build菜单,选择JumpStart models。
或者在Amazon SageMaker Studio的导航栏中选择JumpStart。
2. 在模型主页中搜索Falcon3-10B-Base
。
3. 选择模型Falcon3-10B-Base
,然后点击Deploy(部署)。
4. 选择合适的实例类型(Instance type):使用默认实例或选择适合我们的需求的其他实例类型。
5. 点击Deploy开始部署。
6. 部署完成后点击进入端点(endpoint) 页面,可以看到端点状态将显示为InService,此时即可调用模型进行推理。
通过SageMaker Python SDK 编程部署 Falcon 3
对于像自动化部署或集成至现有MLOps Pipeline的开发者,我们可使用SageMaker Python SDK - Boto3进行部署,我们运行以下代码部署模型:
from sagemaker.serve.builder.model_builder import ModelBuilder
from sagemaker.serve.builder.schema_builder import SchemaBuilder
from sagemaker.jumpstart.model import ModelAccessConfig
from sagemaker.session import Session
import logging
sagemaker_session = Session()
artifacts_bucket_name = sagemaker_session.default_bucket()
execution_role_arn = sagemaker_session.get_caller_identity_arn()
js_model_id = "huggingface-llm-falcon-3-10B-base"
gpu_instance_type = "ml.g5.12xlarge"
response = "Hello, I'm a language model, and I'm here to help you with your English."
sample_input = {
"inputs": "Hello, I'm a language model,",
"parameters": {"max_new_tokens": 128, "top_p": 0.9, "temperature": 0.6},
}
sample_output = [{"generated_text": response}]
schema_builder = SchemaBuilder(sample_input, sample_output)
model_builder = ModelBuilder(
model=js_model_id,
schema_builder=schema_builder,
sagemaker_session=sagemaker_session,
role_arn=execution_role_arn,
log_level=logging.ERROR
)
model= model_builder.build()
predictor = model.deploy(model_access_configs={js_model_id:ModelAccessConfig(accept_eula=True)}, accept_eula=True)
注意:如需设置部署后无调用状态下,让模型实例计算资源自动缩容至零以降低成本,我们需要使用serverless无服务器节点类型。
调用模型API进行推理生成响应,请使用以下的代码
predictor.predict(sample_input)
清理资源
部署完成后,为避免产生额外费用给大家造成无意义的花销,可使用以下代码清理模型及端点:
predictor.delete_model()
predictor.delete_endpoint()