微调美洲驼3.2 3b用于抹布 - 分析vidhya
小语言模型(SLM)对AI产生了重大影响。它们提供出色的性能,同时有效且具有成本效益。一个杰出的例子是Llama 3.2 3b。它在检索型生成(RAG)任务中表现出色,降低计算成本和内存使用情况,同时保持高精度。本文探讨了如何微调Llama 3.2 3B模型。了解较小的模型如何在抹布任务中表现出色,并突破紧凑的AI解决方案可以实现的边界。
目录
- 什么是Llama 3.2 3b?
- Finetuning Llama 3.2 3b
- 洛拉
- 需要库
- 导入库
- 初始化模型和标记器
- 初始化PEFT的模型
- 数据处理
- 设置教练参数
- 微调模型
- 测试并保存模型
- 结论
- 常见问题
什么是Llama 3.2 3b?
由Meta开发的Llama 3.2 3B模型是一个多语言SLM,具有30亿个参数,专为问题回答,摘要和对话系统等任务而设计。它的表现优于行业基准的许多开源模型,并支持各种语言。 Llama 3.2有各种尺寸可用,提供有效的计算性能,并包括在移动和边缘环境中更快,存储效率部署的量化版本。
另请阅读:前13个小语言模型(SLM)
Finetuning Llama 3.2 3b
微调对于将SLM或LLMS调整为特定领域或任务(例如医疗,法律或抹布应用程序)至关重要。虽然预培训使语言模型能够生成跨不同主题的文本,但通过微调对特定于域或特定任务的数据进行微调重新培训,以提高相关性和性能。为了解决微调所有参数的高计算成本,诸如参数有效微调(PEFT)之类的技术专注于训练模型参数的一个子集,在维持性能的同时优化资源使用情况。
洛拉
一种这样的PEFT方法是低级适应(LORA)。
在洛拉(Lora),将SLM或LLM中的重量基质分解为两个低级矩阵的产物。
W = WA * WB
如果W具有M行和n列,则可以将其分解为M行和R列中的WA,以及带有R行和N列的WB。这里的r远小于m或n。因此,我们只能训练r*(mn)值,而不是训练m*n值。 r称为等级,这是我们可以选择的超参数。
def lora_linear(x):<br> h = x @ w#常规线性<br> h =比例 *(x @ w_a @ w_b)#低率更新<br> 返回h
结帐:大型语言模型与洛拉和Qlora的高效微调
让我们在Llama 3.2 3B型号上实现Lora。
需要库
- 不塞 - 2024.12.9
- 数据集 - 3.1.0
安装上述懒惰版本还将安装兼容的Pytorch,变形金刚和NVIDIA GPU库。我们可以使用Google Colab访问GPU。
让我们现在看一下实施!
导入库
来自Unsploth Import fastlanguageModel,is_bfloat16_supported,train_on_responses_only 从数据集import load_dataset,数据集 来自TRL导入SFTTrainer,apply_chat_template 从变形金刚导入培训量,datacollatorforseq2seq,textstreamer 导入火炬
初始化模型和标记器
max_seq_length = 2048 dtype =无#无用于自动检测。 load_in_4bit = true#使用4bit量化来减少内存使用量。可以是错误的。 型号,tokenizer = fastlanguagemodel.from_pretaining( model_name =“ unsploth/llama-3.2-3b-instruct”, max_seq_length = max_seq_length, dtype = dtype, load_in_4bit = load_in_4bit, #token =“ hf _...”,#如果使用诸如meta-llama/llama-3.2-11b之类的封闭模型 )
对于由Unsploth支持的其他模型,我们可以参考此文档。
初始化PEFT的模型
model = fastlanguagemodel.get_peft_model( 模型, r = 16, target_modules = [“ q_proj”,“ k_proj”,“ v_proj”,“ o_proj”, “ gate_proj”,“ up_proj”,“ down_proj”,], lora_alpha = 16, lora_dropout = 0, bias =“无”, use_gradient_checkpointing =“ unsploth”, Random_State = 42, use_rslora = false, loftq_config = none, )
每个参数的描述
- R :洛拉等级;更高的值提高了精度,但使用更多的内存(建议:8-128)。
- target_modules :微调模块;包括全部以获得更好的结果
- lora_alpha :缩放系数;通常等于或两倍的等级r。
- lora_dropout :辍学率;设置为0进行优化和更快的培训。
- 偏见:偏见类型; “无”用于速度和最小拟合的优化。
- USE_GRADIENT_CHECKPOINT :减少内存的内存培训;强烈建议“不塞”。
- Random_State :确定性运行的种子,确保可重复的结果(例如,42)。
- use_rslora :自动选择alpha选择;对稳定的洛拉有用。
- LoftQ_Config :用顶部R单数向量初始化Lora,以提高准确性,尽管记忆力很强。
数据处理
我们将使用抹布数据来列出。从HuggingFace下载数据。
dataset = load_dataset(“ neural-bridge/rag-dataset-1200”,split =“ train”)
该数据集的三个键如下:
数据集({功能:['context','问题','答案'],num_rows:960})
数据需要根据语言模型为特定格式。在此处阅读更多详细信息。
因此,让我们将数据转换为所需的格式:
def convert_dataset_to_dict(数据集): dataset_dict = { “迅速的”: [], “完成”:[] } 对于数据集中的行: user_content = f“ context:{row ['context']} \ n question:{row ['Question']}” Assistion_Content =行['答案'] dataset_dict [“提示”]。附录([[ {“角色”:“用户”,“ content”:user_content} ))) dataset_dict [“完成”]。附录([[ {“角色”:“助手”,“ content”:Assistion_Content} ))) 返回dataset_dict converted_data = convert_dataset_to_dict(数据集) dataset = dataset.from_dict(converted_data) dataset = dataset.map(apply_chat_template,fn_kwargs = {“ tokenizer”:tokenizer})
数据集消息将如下:
设置教练参数
我们可以初始化培训师以填充SLM:
培训师= sfttrainer( 模型=模型, tokenizer = tokenizer, train_dataset =数据集, max_seq_length = max_seq_length, data_collator = datacollatorforseq2seq(tokenizer = tokenizer), dataset_num_proc = 2, 包装= false,#可以使短序列更快地训练5倍。 args = trainingarguments( per_device_train_batch_size = 2, gradient_accumulation_steps = 4, 热身_Steps = 5, #num_train_epochs = 1,#设置此设置为1个完整的训练运行。 max_steps = 6,#使用少量进行测试 Learning_rate = 2e-4, fp16 = not is_bfloat16_supported(), bf16 = is_bfloat16_supported(), logging_steps = 1, optim =“ adamw_8bit”, weight_decay = 0.01, lr_scheduler_type =“线性”, 种子= 3407, output_dir =“输出”, report_to =“无”,#将其用于wandb等 ), )
某些参数的描述:
- per_device_train_batch_size:每个设备的批量尺寸;增加以利用更多的GPU内存,但请注意填充效率低下(建议:2)。
- gradient_accumulation_steps:模拟较大的批量大小而无需额外的内存使用;增加更顺畅的损耗曲线(建议:4)。
- MAX_STEPS:总培训步骤;设置为更快的运行速度(例如60),或使用`num_train_epochs`用于完整数据集通过(例如,1-3)。
- Learning_rate:控制训练速度和融合;较低的速率(例如2E-4)提高了准确性,但训练缓慢。
仅通过指定响应模板才能对响应进行模型训练:
培训师= train_on_responses_only( 教练, consition_part =“ user \ n \ n”, response_part =“ 助手 \ n \ n”, )
微调模型
Trainer_stats = Trainer.Train()
这是培训统计数据:
测试并保存模型
让我们使用模型进行推理:
fastlanguagemodel.for_inference(模型) 消息= [ {“角色”:“用户”,“ content”:“上下文:白天通常清晰的天空。问题:水是什么颜色?”}, 这是给出的 inputs = tokenizer.apply_chat_template( 消息, tokenize = true, add_generation_prompt = true, return_tensors =“ pt”, ).to(“ cuda”) text_streamer = textstreamer(tokenizer,skip_prompt = true) _ = model.generate(input_ids = inputs,artermer = text_streamer,max_new_tokens = 128, use_cache = true,温度= 1.5,min_p = 0.1)
为了节省训练的训练,包括洛拉重量,请使用以下代码
model.save_pretratained_merged(“模型”,Tokenizer,save_method =“ merged_16bit”)
结帐:微调大语言模型指南
结论
用于抹布任务的微调骆驼3.2 3b展示了较小模型在降低计算成本下提供高性能的效率。诸如Lora之类的技术在保持准确性的同时优化了资源使用。这种方法赋予了特定于领域的应用程序,使高级AI更容易访问,可扩展性和具有成本效益,并在检索效果的一代中推动了创新,并使AI民主化了现实世界中的挑战。
另请阅读:开始使用Meta Llama 3.2
常见问题
Q1。什么是抹布?A. RAG将检索系统与生成模型相结合,以通过将其扎根于外部知识来增强回答,从而使其非常适合诸如问答答案和摘要之类的任务。
Q2。为什么选择Llama 3.2 3B进行微调?A. Llama 3.2 3b提供了性能,效率和可扩展性的平衡,使其适合于抹布任务,同时减少计算和内存需求。
Q3。洛拉是什么,如何改善微调?答:低秩适应(LORA)通过仅训练低级矩阵而不是所有模型参数来最大程度地减少资源使用情况,从而在约束硬件上有效地进行微调。
Q4。在本文中,哪些数据集用于微调?答:拥抱面提供包含上下文,问题和答案的抹布数据集,以微调Llama 3.2 3B模型,以提供更好的任务性能。
Q5。可以将微调模型部署在边缘设备上吗?答:是的,Llama 3.2 3b,尤其是以其量化形式的形式,已针对边缘和移动环境的内存有效部署进行了优化。
以上是微调美洲驼3.2 3b用于抹布 - 分析vidhya的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Meta的Llama 3.2:多模式和移动AI的飞跃 Meta最近公布了Llama 3.2,这是AI的重大进步,具有强大的视觉功能和针对移动设备优化的轻量级文本模型。 以成功为基础

嘿,编码忍者!您当天计划哪些与编码有关的任务?在您进一步研究此博客之前,我希望您考虑所有与编码相关的困境,这是将其列出的。 完毕? - 让&#8217

本周的AI景观:进步,道德考虑和监管辩论的旋风。 OpenAI,Google,Meta和Microsoft等主要参与者已经释放了一系列更新,从开创性的新车型到LE的关键转变

Shopify首席执行官TobiLütke最近的备忘录大胆地宣布AI对每位员工的基本期望是公司内部的重大文化转变。 这不是短暂的趋势。这是整合到P中的新操作范式

介绍 想象一下,穿过美术馆,周围是生动的绘画和雕塑。现在,如果您可以向每一部分提出一个问题并获得有意义的答案,该怎么办?您可能会问:“您在讲什么故事?

介绍 Openai已根据备受期待的“草莓”建筑发布了其新模型。这种称为O1的创新模型增强了推理能力,使其可以通过问题进行思考

SQL的Alter表语句:动态地将列添加到数据库 在数据管理中,SQL的适应性至关重要。 需要即时调整数据库结构吗? Alter表语句是您的解决方案。本指南的详细信息添加了Colu

斯坦福大学以人为本人工智能研究所发布的《2025年人工智能指数报告》对正在进行的人工智能革命进行了很好的概述。让我们用四个简单的概念来解读它:认知(了解正在发生的事情)、欣赏(看到好处)、接纳(面对挑战)和责任(弄清我们的责任)。 认知:人工智能无处不在,并且发展迅速 我们需要敏锐地意识到人工智能发展和传播的速度有多快。人工智能系统正在不断改进,在数学和复杂思维测试中取得了优异的成绩,而就在一年前,它们还在这些测试中惨败。想象一下,人工智能解决复杂的编码问题或研究生水平的科学问题——自2023年
