如何将模型微调效率优化2 Unsloth揭秘

  • 电脑网络维修
  • 2024-11-14
在当今人工自动极速开展的时代,言语模型的运行越来越宽泛。但是,要将预训练的言语模型运行到详细的义务中,往往须要启动微调。Unsloth 作为一个预训练模型微调框架,因其杰出的性能和共同的技术特点,遭到了泛滥开发者的关注。本文将深化讨论 Unsloth 的关系内容,协助读者片面了解这个弱小的工具。

一、Unsloth 简介

Unsloth 是一个专门为模型微调而设计的框架,它旨在处置模型微调环节中经常出现的训练速度慢、显存占用初等疑问。经过一系列翻新的技术和优化战略,Unsloth 能够清楚提高模型微调的效率,使得开发者能够在更短的期间内取得更好的模型性能。

二、Unsloth 的关键长处

1. 极速的训练速度

在对干流模型(如 llama - 3、qwen2、mistral 等)启动微调时,Unsloth 展现出了令人注目标训练速度优化。相比其余传统的微调方法,它的速度可以提高 2 至 5 倍。这象征着开发者能够更快地成功模型的训练环节,大大缩短了开发周期。例如,在处置大规模文本数据时,Unsloth 能够迅速收敛,缩小了训练期间,让开发者能够更快地看到模型的成果。

2. 低显存占用

显存占用是模型微调环节中一个关键的疑问,尤其是关于一些资源有限的设施。Unsloth 奇妙地处置了这个疑问,它最大能够缩小约 70%的显存经常使用量。这使得即使在显存有限的配件上,如一些中低端的 GPU 设施,也能够顺利启动模型微调训练。这一长处为更多开发者提供了时机,让他们能够在不同的配件环境下展开上班,而不用担忧配件资源的限度。

三、Unsloth 的技术特点

1. 弱小的兼容性

Unsloth 允许多种配件设置,涵盖了从 Nvidia Tesla T4 到 H100 等不同型号的 GPU。不只如此,它还裁减到了 AMD 和英特尔 GPU 的兼容性,这为经常使用不同配件的开发者提供了极大的便利。无论你经常使用的是哪种 GPU 设施,都可以尝试经常使用 Unsloth 启动模型微调。这种宽泛的兼容性使得 Unsloth 能够在不同的配件平台上施展出其长处,为开发者提供了更多的选用。

2. 优化的内存经常使用

Unsloth 驳回了自动权重上投等开创性技术,在 QLoRA 环节中缩小了权重上投的必要性,从而有效地优化了内存经常使用。经过这种模式,它能够更好地利用配件资源,提高模型训练的效率。此外,Unsloth 还能够迅速应用 BFloat16,提高 16 位训练的稳固性,进一步放慢了 QLoRA 的微调环节。这种对内存和计算资源的精细治理,使得 Unsloth 在处置大规模模型和数据时体现杰出。

四、Unsloth 的经常使用体验

1.装置 Unsloth

装置 Unsloth 相对方便,你可以经过以下命令启动装置:`pip install "unsloth(cu121 - torch230)@git +"`。当然,详细的装置命令或者会因环境和需求的不同而有所差异。在装置环节中,倡导参考官网文档,以确保装置的顺利启动。

pip install "unsloth[colab-new] @ git+"

口头如下:

2.镜像设置

因为网络要素,或者不可访问huggingface上的资源,可以经常使用国际的镜像站。​​ ​​ ​

1)装置依赖

pip install -U huggingface_hub

2)设置环境变量

import osos.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'

3.模型加载

from unsloth import FastLanguageModelimport torchmax_seq_length = 2048 # Choose any! We auto support RoPE Scaling internally!dtype = None # None for auto detection. Float16 for Tesla T4, V100, Bfloat16 for Ampere+load_in_4bit = True # Use 4bit quantization to reduce memory usage. Can be False.# 4bit pre quantized models we support for 4x faster downloading + no OOMs.fourbit_models = ["unsloth/Meta-Llama-3.1-8B-bnb-4bit",# Llama-3.1 2x faster"unsloth/Meta-Llama-3.1-8B-Instruct-bnb-4bit","unsloth/Meta-Llama-3.1-70B-bnb-4bit","unsloth/Meta-Llama-3.1-405B-bnb-4bit",# 4bit for 405b!"unsloth/Mistral-Small-Instruct-2409",# Mistral 22b 2x faster!"unsloth/mistral-7b-instruct-v0.3-bnb-4bit","unsloth/Phi-3.5-mini-instruct",# Phi-3.5 2x faster!"unsloth/Phi-3-medium-4k-instruct","unsloth/gemma-2-9b-bnb-4bit","unsloth/gemma-2-27b-bnb-4bit",# Gemma 2x faster!"unsloth/Llama-3.2-1B-bnb-4bit",# NEW! Llama 3.2 models"unsloth/Llama-3.2-1B-Instruct-bnb-4bit","unsloth/Llama-3.2-3B-bnb-4bit","unsloth/Llama-3.2-3B-Instruct-bnb-4bit",] # More models attokenizer = FastLanguageModel.from_pretrained(model_name = "unsloth/Llama-3.2-3B-Instruct", # or choose "unsloth/Llama-3.2-1B-Instruct"max_seq_length = max_seq_length,dtype = dtype,load_in_4bit = load_in_4bit,# token = "hf_...", # use one if using gated models like meta-llama/Llama-2-7b-hf)

加载如下:

4.LoRA 性能

model = FastLanguageModel.get_peft_model(model,r = 16, # Choose any number > 0 ! Suggested 8, 16, 32, 64, 128target_modules = ["q_proj", "k_proj", "v_proj", "o_proj","gate_proj", "up_proj", "down_proj",],lora_alpha = 16,lora_dropout = 0, # Supports any, but = 0 is optimizedbias = "none",# Supports any, but = "none" is optimized# [NEW] "unsloth" uses 30% less VRAM, fits 2x larger batch sizes!use_gradient_checkpointing = "unsloth", # True or "unsloth" for very long contextrandom_state = 3407,use_rslora = False,# We support rank stabilized LoRAloftq_config = None, # And LoftQ)

5.数据集预备

经常使用 Maxime Labonne 的 ShareGPT 格调的 FineTome-100k 数据集。

将 ("from", "value")格局,交流为("role", "content") 格局

from unsloth.chat_templates import get_chat_templatetokenizer = get_chat_template(tokenizer,chat_template = "llama-3.1",)def formatting_prompts_func(examples):convos = examples["conversations"]texts = [tokenizer.apply_chat_template(convo, tokenize = False, add_generation_prompt = False) for convo in convos]return { "text" : texts, }passfrom>

数据集读取

咱们如今经常使用`standardize_sharegpt`将sharegpt格调的数据集转换为HuggingFace的通用格局。

{"from": "system", "value": "You are an assistant"}

{"from": "human", "value": "What is 2+2?"}

{"from": "gpt", "value": "It's 4."}

{"role": "system", "content": "You are an assistant"}

{"role": "user", "content": "What is 2+2?"}

{"role": "assistant", "content": "It's 4."}

from unsloth.chat_templates import standardize_sharegptdataset = standardize_sharegpt(dataset)dataset =>
  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/5297.html

猜你喜欢

热门标签

洗手盆如何疏浚梗塞 洗手盆为何梗塞 iPhone提价霸占4G市场等于原价8折 明码箱怎样设置明码锁 苏泊尔电饭锅保修多久 长城画龙G8253YN彩电输入指令画面变暗疑问检修 彩星彩电解除童锁方法大全 三星笔记本培修点上海 液晶显示器花屏培修视频 燃气热水器不热水要素 热水器不上班经常出现3种处置方法 无氟空调跟有氟空调有什么区别 norltz燃气热水器售后电话 大连站和大连北站哪个离周水子机场近 热水器显示屏亮显示温度不加热 铁猫牌保险箱高效开锁技巧 科技助力安保无忧 创维8R80 汽修 a1265和c3182是什么管 为什么电热水器不能即热 标致空调为什么不冷 神舟培修笔记本培修 dell1420内存更新 青岛自来水公司培修热线电话 包头美的洗衣机全国各市售后服务预定热线号码2024年修缮点降级 创维42k08rd更新 空调为什么运转异响 热水器为何会漏水 该如何处置 什么是可以自己处置的 重庆华帝售后电话 波轮洗衣机荡涤价格 鼎新热水器 留意了!不是水平疑问! 马桶产生了这5个现象 方便 极速 邢台空调移机电话上门服务 扬子空调缺点代码e4是什么疑问 宏基4736zG可以装置W11吗 奥克斯空调培修官方 为什么突然空调滴水很多 乐视s40air刷机包 未联络视的提高方向 官网培修 格力空调售后电话 皇明太阳能电话 看尚X55液晶电视进入工厂形式和软件更新方法 燃气热水器缺点代码

热门资讯

关注我们

微信公众号