'Authentic Dale Earnhardt Jr. 1:24 scale diecast car. Nationwide Raw Finish. Collectible model car for racing fans. Perfect gift for NASCAR enthusiasts.'技术支持
5. 处理数据集
现在,我们将处理仅包含文本和图像的数据集。提示模板包含用户问题、图像和产品描述。
instruction ="""
You are an expert Amazon worker who is good at writing product descriptions.
Write the product description accurately by looking at the image.
"""defconvert_to_conversation(sample):
conversation =[{"role":"user","content":[{"type":"text","text": instruction},{"type":"image","image": sample["image"]},],},{"role":"assistant","content":[{"type":"text","text": sample["description"]}],},]return{"messages": conversation}pass
converted_dataset =[convert_to_conversation(sample)for sample in dataset]技术支持
{'messages':[{'role':'user','content':[{'type':'text','text':'\nYou are an expert Amazon worker who is good at writing product descriptions. \nWrite the product description accurately by looking at the image.\n'},{'type':'image','image':<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=500x302>}]},{'role':'assistant','content':[{'type':'text','text':'Authentic Dale Earnhardt Jr. 1:24 scale diecast car. Nationwide Raw Finish. Collectible model car for racing fans. Perfect gift for NASCAR enthusiasts.'}]}]}技术支持
The image showcases a race car featuring the well-known sponsorship branding "Nationwide," likely the primary vehicle in the Nationwide Series. The vehicle has a blue hood with the "Nationwide" logo prominently displayed and white text that reads,"on your side," on the windscreen. The car is predominantly white and grey, adorned with sponsor decals on various parts of the vehicle.
The front grille showcases the Chevrolet "Bowtie" logo,and the car is equipped with Chevrolet emblems and other sponsor decals, including:
• A white 88 logo on the front windscreen
Notably, the vehicle's wheels are equipped with "GoodYear技术支持
Bring the thrill of NASCAR racing to your desk or shelf with the 1/64 Die-Cast 2016 NASCAR 88 Dale Earnhardt Jr. Nationwide Chevrolet SS! Highly detailed and precision engineered, this collectible die-cast car captures the iconic look of Earnhardt's famous No.88 ride. Perfect for kids and adults alike, this miniature masterpiece makes a great gift.#NASCAR #DieCast #CollectibleCars #DaleEarnhardtJr #Nationwide<|eot_id|>技术支持
10. 保存模型与分词器
我们先将模型保存在本地,然后推送到 Hugging Face Hub。要将模型上传到 Hugging Face 服务器,需要使用我们的 Hugging Face 令牌登录。
我们已经探讨了许多关于微调大型语言模型(LLM)的指南,但很少有资源涵盖微调多模态模型的流程。在本教程中,我们将介绍一款最前沿的多模态模型——Llama 3.2 Vision,并演示如何使用 Amazon 产品数据集对其进行微调。我们的目标是构建一个产品描述生成器,为 Amazon 上架的商品提供准确且简洁的图像说明。
如果您是第一次微调 LLM,请先学习Fine-tuning with Llama 3课程,熟悉常见的方法和术语。您也可以查看我们的Llama 3.2 90B 教程,其中介绍了如何使用 Streamlit 构建前端图像描述应用,使用 Llama 3.2 90B 生成描述,并以 Groq 作为 API。
图片由作者提供
了解 Llama 3.2 Vision 模型
Llama 3.2引入了多模态模型,能够处理图像和文本数据,生成自然且准确的响应。Llama 3.2 视觉模型提供 11B 和 90B 两种参数规模,专为高精度处理图像推理场景而设计。在常见行业基准上,这些模型优于许多现有的开源和闭源多模态模型。
阅读Llama 3.2 指南:工作原理、用例与更多,深入了解所有模型变量。
Llama 3.2 视觉模型擅长文档级理解、图表分析、图像描述和视觉定位等任务,其中通过自然语言描述来定位图像中的对象。
Llama 3.2 Vision 模型架构
Llama 3.2 Vision 模型构建于较早的仅文本 Llama 3.1 之上,后者是一种采用 Transformer 架构的高级语言模型。它通过有监督学习(SFT)和结合人类反馈的强化学习(RLHF)进行微调,以符合人类在有用性和安全性方面的偏好。
为支持图像识别,Llama 3.2 Vision 集成了单独训练的视觉适配器。该适配器使用交叉注意力层将图像编码器的输出融入预训练的 Llama 3.1 语言模型,使其能够高效处理基于文本与图像的任务。
Llama 3.2 Vision 的关键特性
Llama 3.2 Vision 模型用例
Llama 3.2 Vision 在视觉问答、文档分析、图像描述、图文检索和视觉定位等用例中表现出色。
在 Amazon 产品数据集上微调 Llama 3.2 Vision
在本项目中,我们将使用 Kaggle 作为编码与计算环境,Unsloth 作为微调框架,以及 Amazon 产品描述数据集。与传统方法相比,Unsloth 速度快、占用 GPU 内存少、代码量更少。
如果您想为文本生成方案微调 LLM,我们有一篇非常合适的教程:Fine-tuning Llama 3.2 and Using It Locally: A Step-by-Step Guide。
1. 环境准备
创建一个新的 Kaggle 笔记本,将加速器设置为使用两块 T4 GPU。将您的 Hugging Face 令牌添加为 Kaggle 机密,以便稍后可以安全地将模型推送到您的 Hugging Face 仓库。然后使用 pip 命令安装
unslothPython 包。阅读Unsloth 指南:优化并加速 LLM 微调,进一步了解 Unsloth。
2. 加载模型
在此设置中,我们加载的是
Llama-3.2-11B-Vision-Instruct模型,具体为 Unsloth 提供的版本,已针对高效微调与推理进行优化。模型以 4 位量化方式加载,显著降低内存占用与计算需求,使在 T4 GPU 上运行大型视觉模型成为可能。3. 配置 LoRA
LoRA(低秩适配)是一种高效微调大型预训练模型的技术,通过在模型特定部分引入可学习的低秩矩阵来实现。该方法轻量且计算效率高,支持在不修改预训练模型核心结构的情况下进行任务特定微调。
使用 LoRA 训练模型时,我们重点选择并微调特定组件,例如视觉层、语言层、注意力模块和 MLP 模块。这使我们能够以最小的架构改动将模型适配至特定任务。
4. 加载数据集
从 Hugging Face Hub 加载philschmid/amazon-product-descriptions-vlm数据集,并仅选择前 500 个样本。该数据集包含产品图片、产品描述及其他必要信息。
这是其中一张产品图片。
以下是其描述。
5. 处理数据集
现在,我们将处理仅包含文本和图像的数据集。提示模板包含用户问题、图像和产品描述。
新数据集不是表格形式,而是遵循类似 OpenAI 的提示风格。
6. 微调前的模型推理
我们将从数据集中选取第 46 个样本,对其进行推理,评估在未微调情况下模型生成产品描述的能力。
生成的描述既冗长又不准确,写作风格也不一致。
7. 配置微调所需的模型设置
现在我们将设置模型训练,并初始化有监督微调(SFT)训练器,结合自定义的数据整理器、数据集与训练配置,为高效微调做好准备。
8. 训练模型
运行
trainer.train()启动训练过程。模型在 16 分钟内完成了一个 epoch,训练损失逐步下降,结果不错。
9. 微调后的模型推理
现在我们来测试模型,以确认微调是否成功。我们将选取数据集中的同一张图片,对其进行推理。
结果不错,但并非完全准确。话题标签没有必要。要获得最佳效果,需要在完整数据集上训练至少 3 个 epoch。
10. 保存模型与分词器
我们先将模型保存在本地,然后推送到 Hugging Face Hub。要将模型上传到 Hugging Face 服务器,需要使用我们的 Hugging Face 令牌登录。
通过阅读博文What is Hugging Face? The AI Community's Open-Source Oasis,探索 Hugging Face 这个面向机器学习与大型语言模型(LLM)的开源社区中心。
之后,将模型与分词器保存在本地。
然后使用
push_to_hub将模型保存到 Hugging Face Hub。上述命令将创建新的模型仓库,并将所有文件推送到 Hugging Face。
来源:kingabzpro/llama_3.2_vision_amazon_product
如果您在运行上述代码时遇到问题,请参考 Kaggle 笔记本:Fine-tuning Llama 3.2 Vision on Amazon Dataset
结语
微调 Llama 3.2 Vision 模型为诸多场景打开了大门,尤其是在需要同时利用图像与文本以获得相关且准确结果的情况下。通过在自定义数据集上微调,我们可以提升性能,并将风格适配于视觉问答(VQA)、文档 VQA(DocVQA)、图像描述与图文检索等应用。
在本教程中,我们深入了解了 Llama 3.2 Vision 模型,并在 Amazon 产品描述数据集上微调了 11B 版本,构建了一个高度定制的产品描述生成器,能够采用所需风格并提供准确的产品描述。
下一步,学习如何构建 AI 应用并使用 Docker 镜像将其部署到云端,请参阅指南:How to Deploy LLM Applications Using Docker: A Step-by-Step Guide。