产品展示

  • 首页
  • 产品展示
  • 对话引导的视觉语言处理与 Amazon SageMaker JumpStart 机器学习博客

对话引导的视觉语言处理与 Amazon SageMaker JumpStart 机器学习博客

2026-01-27 14:01:17

基于对话的视觉语言处理与 Amazon SageMaker JumpStart

作者:Alfred Shen Li Zhang Changsha Ma Xin Huang,发表于 2023年11月1日类别:进阶 (300)、Amazon SageMaker JumpStart、人工智能、生成式AI永久链接

关键要点

视觉语言处理VLP目前在生成式AI领域发挥着核心作用,与大语言模型LLM和丰富的数据集结合,实现多模态学习,适用于图像描述、对象检测与分割等任务。VLP利用预训练的视觉语言模型VLM和大语言模型LLM,可以进行零样本和少样本的预测,无需针对特定任务进行修改。提出了一种集成先进生成式AI模型的VLP解决方案,该方案能够实现高效的多模态输出。通过使用Amazon SageMaker JumpStart和相关工具,可以高效地部署并实现针对具体领域的微调。

视觉语言处理VLP是推动生成式AI进步的前沿技术,它结合了语言智能、视觉理解和处理等多方面的学习能力。配合大型语言模型LLM与大规模多模态数据训练的对比语言图像预训练CLIP,视觉语言模型VLM在图像描述、对象检测与分割、视觉问答等任务中表现尤为出色。其应用遍及媒体娱乐、医疗诊断、制造业的质量保证等多个领域。

VLP的关键优势在于有效利用预训练的VLM和LLM,能在无需任务特定修改的情况下实现零样本或少样本的预测;同时通过轻松的多轮对话对图像进行广泛分类。辅以Grounded Segment Anything,VLP在视觉识别方面表现出色,特别是在对象检测和分割方面。存在进一步使用特定领域数据微调VLM和LLM的潜力,以提高准确性和减少虚妄现象。然而,像其他新兴技术一样,VLP在管理模型复杂性、协调多种模态和制定统一评价标准方面仍面临挑战。

在本文中,我们探讨了使用Amazon SageMaker JumpStart进行VLP原型设计的技术细节。通过多轮对话的示例,强调指令导向的零样本和少样本视觉语言处理的能力,突显其灵活性,并旨在吸引更广泛多模态社区的关注。示例实现代码可在以下GitHub仓库中获得。

解决方案概览

所提出的VLP解决方案集成了一系列先进的生成式AI模块,旨在生成准确的多模态输出。架构的核心是微调的VLM和LLM,二者在解码视觉与文本数据流中起到关键作用。TGI框架支撑了模型推理层,提供RESTful API,实现了强大的集成与高效的可访问性。我们的音频数据处理还配备了Whisper ASR,它同样具备RESTful API功能,从而能简化语音到文本的转换。

对于图像到文本的复杂分割问题,我们利用了容器化的Grounded Segment Anything模块,结合了Grounded DINO和Segment Anything ModelSAM机制,实现基于文本驱动的对象检测和分割。系统进一步整合了DistilBERT,优化了我们的对话引导多类分类过程。这些组成部分由LangChain处理管道协调,一个高效的机制,能够分析文本或语音输入,辨别用户意图,并合理地将子任务分派到相关服务。所有操作的结合产生了聚合输出,提供准确且上下文感知的多模态答案。

下图展示了我们基于对话的VLP解决方案的架构。

文本生成推理

文本生成推理TGI是Hugging Face开发的开源工具包,用于将LLM和VLM部署为推理。它支持使用张量并行性、模型并行性和动态批处理实现高性能的文本生成,兼容一些领先的开源LLM,比如Falcon和Llama V2,以及像IDEFICS这样的VLM。AWS用户现在可以利用Amazon SageMaker上的最新Hugging Face LLM模块,轻松部署来自Hugging Face中心的LLM,借助预构建的SageMaker深度学习容器DLCs。该推理设置不仅提供卓越的性能,还无需管理复杂的GPU基础设施。此外,您还可享受推理端点的自动扩展、高级安全性及内置模型监控等功能。

TGI的文本生成速度相比传统推理方法快达100倍,并能够有效扩展以处理增加的请求。其设计确保与各种LLM的兼容性,开源特性使得社区共享先进功能成为可能。TGI的灵活性遍布多个领域,提升了聊天机器人表现、改进机器翻译、生成文本摘要及各种内容的创作,从诗歌到代码。因此,TGI成为了应对文本生成挑战的全面解决方案。TGI使用Python实现并基于PyTorch框架,其是开源的,并可在GitHub上获取。此外,它支持使用QLoRA的PEFT以实现更快的性能,并通过生成logits扭曲控制生成文本的属性,如确定其长度和多样性,而无需修改底层模型。

您可以直接从以下Dockerfile构建定制的TGI Docker容器,然后将容器映像推送到Amazon弹性容器注册表ECR进行推理部署。代码如下:

bashsh

定义docker映像名称和容器的亚马逊资源名称

containername=tgi103region=aws configure get regionaccount=aws sts getcalleridentity query Account output textfullname={account}dkrecr{region}amazonawscom/{containername}latest

获取ECR的登录命令并直接执行

aws ecr getloginpassword region {region}docker login username AWS passwordstdin {account}dkrecr{region}amazonawscom

在本地构建TGI docker映像

docker build f Dockerfile t {containername}docker tag {containername} {fullname}docker push {fullname}

LLM推理与TGI

本文中的VLP解决方案结合了LLM与LangChain,利用链式思维CoT方法实现更精确的意图分类。CoT处理查询以识别意图并触发相关的子任务,以满足查询的目标。Llama27bchathf许可协议是Llama2系列的精简版,专为对话环境设计。Llama27bchathf的推理由TGI容器映像提供支持,使其可用作API启用的服务。

对于Llama27bchathf推理,建议使用g52xlarge24G VRAM以实现最佳性能。对于需要更强大LLM的应用,Llamav213b模型非常合适,适用于g512xlarge96G VRAM实例。对于Llama270b模型,考虑使用GPU[2xlarge] 2张Nvidia A100,配合bitsandbytes量化,或使用g548xlarge。值得注意的是,使用bitsandbytes量化可将所需的推理GPU VRAM减少50。

您可以使用带有上述TGI容器映像的SageMaker DLC来部署Llama27bchathf进行推理见以下代码。或者,您也可以通过Docker容器在g52xlarge实例上快速启动本地推理进行概念验证。

pythonimport jsonfrom time import gmtime strftimefrom sagemakerhuggingface import gethuggingfacellmimageurifrom sagemakerhuggingface import HuggingFaceModelfrom sagemaker import getexecutionrole

对话引导的视觉语言处理与 Amazon SageMaker JumpStart 机器学习博客

前提条件:创建唯一的模型名称

modelname = Llama7bchathf strftime(YmdHMS gmtime())

检索SageMaker预构建DLC TGI v103的llm映像uri

tgiimageecruri = gethuggingfacellmimageuri( huggingface version=103)

定义模型和端点配置参数

hfconfig = { HFMODELID metaresearch/Llama27bchathf # 匹配Hugging Face Hub上的modelid SMNUMGPUS jsondumps(numberofgpu) MAXTOTALTOKENS jsondumps(1024) HFMODELQUANTIZE bitsandbytes # 使用量化以减少VRAM需求,若无需则注释掉。}

创建HuggingFaceModel,使用SageMaker预构建DLC TGI映像uri

smllmmodel = HuggingFaceModel( role=getexecutionrole() imageuri=tgiimageecruri env=hfconfig)

部署模型

llm = smllmmodeldeploy( initialinstancecount=1 instancetype=mlg52xlarge containerstartuphealthchecktimeout=300 # 秒。允许5分钟以加载模型)

定义推理有效负载

prompt=ltpromptergt如何为您的生成AI项目选择合适的LLM?ltendoftextgtltassistantgt

LLM的超参数

payload = { inputs prompt parameters { bestof 1 decoderinputdetails true details true dosample true maxnewtokens 20 repetitionpenalty 103 returnfulltext false seed null stop [ photographer ] temperature 05 topk 10 topp 095 truncate null typicalp 095 watermark true } stream false}

向端点发送请求

response = llmpredict(payload)

微调与定制LLM

SageMaker JumpStart提供大量笔记本示例,以演示如何使用有效参数微调PEFT对LLM进行训练和微调,包括QLoRA。QLoRA在每个Transformer结构的层中引入可训练的秩分解矩阵,同时保持预训练模型的权重不变。这种方法显著减少了下游任务所需的可训练参数数量。

或者,您可以探索直接首选优化DPO,它省去了设置奖励模型的必要性,并在微调过程中从LLM抽样。最近的研究表明,DPO的微调在管理情感生成、改善摘要质量和单一对话响应方面超越了RLHF,同时在设置和训练时更为简单。DPO训练过程的主要步骤如下详细信息请参考GitHub repo:

对预训练基础LLM进行监督微调,以创建微调后的LLM。使用微调模型运行DPO训练器以创建强化学习模型。将DPO中的适配器合并到基础LLM模型中,以进行文本生成推理。

可以使用TGI容器映像将合并后的模型部署进行推理。

视觉语言模型

结合视觉与语言模态的视觉语言模型VLM在泛化能力方面显示出提高的效果,使得在零样本或少样本指令提示下实现各种实用用例成为可能。VLM通常由三个关键元素构成:图像编码器、文本编码器,以及融合这两种编码器信息的策略。这些关键元素紧密耦合在一起,因为损失函数是围绕模型架构和学习策略设计的。许多最先进的VLM使用CLIP/ViT如OpenCLIP和LLM如Llamav1,并在多个公开可用的数据集如维基百科、LAION和公共多模态数据集上进行训练。

本演示使用由HuggingFaceM4开发的预训练IDEFICS9binstruct模型,这是在训练过程中结合两种预训练模型laion/CLIPViTH14laion2Bs32Bb79K和huggyllama/llama7b并修改Transformer块而得到的IDEFICS9b的微调版本。IDEFICS9b在OBELIC、维基百科、LAION和PMD多模态数据集上训练,包含总共1500亿个令牌和1582亿张224224分辨率的图像。IDEFICS9b基于Llama7b,具有131万的有效批大小。然后,IDEFICS9binstruct通过对所有参数视觉编码器、语言模型、交叉注意力解冻,使用生成AI增强而创建的680万多模态指导数据集进行了微调。微调数据集包括以下抽样比例的预训练数据:51的图像文本对和307的OBELICS多模态网页文档。

训练软件基于Hugging Face Transformers和Accelerate开发,使用DeepSpeed ZeRO3进行训练,数据加载则使用WebDataset和Image2DataSets。IDEFICS9b的预训练在128个Nvidia A100 GPU上完成,耗时350小时,而IDEFICS9binstruct的微调同样在128个Nvidia A100 GPU上进行,耗时70小时,均在AWS p424xlarge实例上完成。

飞速加速器客户端

通过SageMaker,您可以毫无缝隙地在g52xlarge实例上部署IDEFICS9binstruct进行推理任务。以下代码片段展示了如何启动与定制的TGI Docker映像集成的深度学习本地容器:

bashshllmmodel=HuggingFaceM4/idefics9binstructdockerrtname=idefics9binstructdockerimagename=tgi103docker run gpus=1234 shmsize 20g p 808080 restart unlessstopped name {dockerrtname} {dockerimagename} modelid {llmmodel}

使用curl测试LLM API

curl X POST http//8080/ H accept application/json H ContentType application/json d { inputs User这张图片是哪个设备产生的?请解释该图像的主要临床用途。您能根据这张图撰写放射科报告吗? parameters { bestof 1 decoderinputdetails true details true dosample true maxnewtokens 20 repetitionpenalty 103 returnfull