当前位置: 首页 > news >正文

成品网站w灬源码1688免费做公司网站能在百度上搜索的到

成品网站w灬源码1688,免费做公司网站能在百度上搜索的到,h5页面怎么制作免费,wordpress调用留言板如果你对这篇文章感兴趣#xff0c;而且你想要了解更多关于AI领域的实战技巧#xff0c;可以关注「技术狂潮AI」公众号。在这里#xff0c;你可以看到最新最热的AIGC领域的干货文章和案例实战教程。 一、前言 在大型语言模型#xff08;LLM#xff09;领域#xff0c;微… 如果你对这篇文章感兴趣而且你想要了解更多关于AI领域的实战技巧可以关注「技术狂潮AI」公众号。在这里你可以看到最新最热的AIGC领域的干货文章和案例实战教程。 一、前言 在大型语言模型LLM领域微调是提高性能和调整行为的关键过程。然而由于内存需求巨大对于大型模型进行微调可能非常昂贵。最近华盛顿大学发表了一项关于解决这一问题的创新方案——QLoRAQuantized Low-Rank Adapter。 QLoRA是一种新的微调大型语言模型LLM的方法它能够在节省内存的同时保持速度。其工作原理是首先将LLM进行4位量化从而显著减少模型的内存占用。接着使用低阶适配器LoRA方法对量化的LLM进行微调。LoRA使得改进后的模型能够保留原始LLM的大部分准确性同时具有更小的体积和更快的速度。 以上是对QLoRA的简要介绍下面将进一步探讨其原理和应用。 二、QLoRA 介绍 QLoRA 是一种高效的微调方法通过将梯度反向传播到低阶适配器(LoRA)中以显著减少内存使用量。它可以在单个48GB GPU上微调650亿个参数的模型并且能够保持完整的16位微调任务性能。 同时还推出了一个名为 Guanaco 的新模型家族它在Vicuna基准上表现出色达到了ChatGPT性能水平的99.3%。令人惊喜的是只需要在单个GPU上进行24小时的微调就能够取得如此优异的结果。这些创新使得在资源有限的情况下能够以更高效的方式进行模型微调并取得了非常令人满意的成果。 QLoRA是一种创新的微调LLM方法经过多项任务验证包括文本分类、问题回答和自然语言生成等证明了其在各个领域的有效性。这一方法的出现为更广泛的用户和应用程序提供了更便捷的LLM应用方式并有望进一步推动LLM在不同领域的应用。 2.1、关键创新 统的 LoRA低秩适配器和 QLoRA量化 LoRA都是微调大型语言模型并减少内存需求的方法。然而QLoRA 引入了多项创新以在保持性能的同时进一步减少内存使用。以下是两种方法的比较 LoRA - 使用一小组可训练参数适配器同时保持完整模型参数固定。 - 随机梯度下降期间的梯度通过固定的预训练模型权重传递到适配器适配器被更新以优化损失函数。 - 与完全微调相比内存效率更高但仍需要 16 位精度进行训练。 QLoRA - 通过冻结的 4 位量化预训练语言模型将梯度反向传播到低阶适配器 (LoRA) 中。 - 引入 4 位 NormalFloat (NF4)这是一种适用于正态分布数据的信息理论上最佳量化数据类型可产生比 4 位整数和 4 位浮点更好的经验结果。 - 应用双量化一种对量化常数进行量化的方法每个参数平均节省约 0.37 位。 - 使用具有 NVIDIA 统一内存的分页优化器以避免在处理具有长序列长度的小批量时在梯度检查点期间出现内存峰值。 - 显着降低内存需求与 16 位完全微调基准相比允许在单个 48GB GPU 上微调 65B 参数模型而不会降低运行时间或预测性能。 总之QLoRA 建立在传统 LoRA 的基础上引入了 4 位量化、4 位 NormalFloat 数据类型、双量化和分页优化器以进一步减少内存使用同时保持与 16 位微调方法相当的性能。 2.2性能分析 通过对模型规模和聊天机器人性能进行深入研究发现了一些有趣的结果。由于内存开销的限制常规微调方法无法使用。因此采用了一种特殊的指令微调方法在多个数据集、不同的模型架构和参数数量范围内进行了训练总共训练了1000多个模型。 结果显示即使使用比之前最先进的模型更小的模型通过QLoRA对小型高质量数据集进行微调也能够获得最先进的结果。这表明数据质量对于模型性能的影响远远大于数据集的大小。这一发现对于优化聊天机器人的性能具有重要的指导意义。 通过对 Guanaco 65B 模型进行了评估该模型使用 QLORA 对 OASST1 的变体进行了微调。结果表明它是性能最佳的开源聊天机器人模型其性能可与 ChatGPT 相媲美。与 GPT-4 相比Guanaco 65B 和 33B 的预期获胜概率为 30%。 在 Vicuna 基准测试中Guanaco 65B 在 GPT-4 之后表现最好相对于 ChatGPT 达到了 99.3% 的性能。尽管参数较多但由于权重仅使用 4 位精度Guanaco 33B 模型的内存效率比 Vicuna 13B 模型更高。此外Guanaco 7B 可以安装在现代手机上同时得分比 Alpaca 13B 高出近 20 个百分点。 尽管结果令人印象深刻但许多模型的性能重叠置信区间范围很广。作者将这种不确定性归因于缺乏明确的规模规范。为了解决这个问题他们建议使用 Elo 排名方法该方法基于人类注释者和 GPT-4 的成对判断。 Elo 排名表明Guanaco 33B 和 65B 模型在 Vicuna 和 OA 基准测试中的表现优于除 GPT-4 之外的所有模型并且与 ChatGPT 的表现相当。然而微调数据集的选择极大地影响了性能表明数据集适用性的重要性。 三、使用 QLoRA 微调 GPT 模型 3.1、QLoRA 的硬件要求 GPU对于参数少于200亿的模型例如GPT-J建议使用至少具有12 GB VRAM的GPU。例如可以使用 RTX 3060 12 GB GPU。如果您有更大的 GPU 和 24 GB VRAM则可以使用具有 200 亿个参数的模型例如 GPT-NeoX-20b。 RAM建议您至少拥有 6 GB RAM。目前大多数计算机都满足这一标准。 Hard Drive由于 GPT-J 和 GPT-NeoX-20b 是大型型号因此您的硬盘上至少需要有 80 GB 的可用空间。 如果您的系统不满足这些标准您可以使用 Google Colab 的免费实例。 3.2、QLoRA 的软件要求 CUDA确保您的计算机上安装了 CUDA。 Dependencies: 依赖项 bitsandbytes该库包含量化大型语言模型LLM所需的所有工具。 Hugging Face Transformers 和 Accelerate这些标准库用于 Hugging Face Hub 的高效模型训练。 PEFT该库提供了各种方法的实现以微调少量额外的模型参数。 LoRA 需要它。 数据集虽然不是强制性的但可以使用数据集库来获取数据集以进行微调。或者您可以提供自己的数据集。 确保在继续对 GPT 模型进行基于 QLoRA 的微调之前安装所有必需的软件依赖项。 四、QLoRA 演示 Guanaco 是一个专为研究目的而设计的系统可以通过以下的演示地址体验。 访问 Guanaco Playground 演示[4]这是33B型号的演示65B型号的演示将稍后进行。 如果您想要托管自己的 Guanaco gradio 演示您可以使用此[5]。对于7B和13B型号它可以与免费GPU配合使用。 关于ChatGPT和guanaco之间的区别可以在[6]中比较它们的模型响应。在Vicuna提示上您可以看到ChatGPT和guanaco 65B之间的对比。 五、QLoRA 安装 要使用 Transformer 和 BitsandBytes 加载 4 位模型您必须从源代码安装加速器和 Transformer并安装当前版本的 BitsandBytes 库 (0.39.0)。您可以使用以下命令来实现上述目的 pip install -q -U bitsandbytes pip install -q -U githttps://github.com/huggingface/transformers.git pip install -q -U githttps://github.com/huggingface/peft.git pip install -q -U githttps://github.com/huggingface/accelerate.git六、QLoRA 入门 qlora.py 函数可用于对各种数据集进行微调和推断。以下是在 Alpaca 数据集上微调基线模型的基本命令 python qlora.py --model_name_or_path path_or_name对于大于13B的模型我们建议调整学习率 python qlora.py –learning_rate 0.0001 --model_name_or_path path_or_name6.1、量化 量化参数由 BitsandbytesConfig 控制如下所示 通过 load_in_4bit 启用 4 位加载。 bnb_4bit_compute_dtype 用于线性层计算的数据类型。 嵌套量化通过 bnb_4bit_use_double_quant 启用。 bnb_4bit_quant_type 指定用于量化的数据类型。支持两种量化数据类型 fp4 四位浮点和 nf4 常规四位浮点。我们提倡使用 nf4 因为理论上它对于正态分布权重来说是最佳的。 model AutoModelForCausalLM.from_pretrained(model_name_or_path/name/or/path/to/your/model,load_in_4bitTrue,device_mapauto,max_memorymax_memory,torch_dtypetorch.bfloat16,quantization_configBitsAndBytesConfig(load_in_4bitTrue,bnb_4bit_compute_dtypetorch.bfloat16,bnb_4bit_use_double_quantTrue,bnb_4bit_quant_typenf4),)6.2、分页优化器 为了处理 GPU 偶尔耗尽内存的情况QLoRA 使用了利用 NVIDIA 统一内存功能的分页优化器该功能在 CPU 和 GPU 之间执行自动页到页传输其功能与 CPU RAM 和 GPU 之间的常规内存分页非常相似。磁盘。此功能用于为优化器状态分配分页内存然后在 GPU 内存不足时将其移至 CPU RAM并在需要时转移回 GPU 内存。 我们可以使用以下参数访问分页优化器。 --optim paged_adamw_32bit七、使用 QLoRA 微调 LLaMA 2 接下来我们将介绍如何在单个 Google Colab 上微调最新的 Llama-2-7b 模型并将其转变为聊天机器人。我们将利用 Hugging Face 生态系统中的 PEFT 库以及 QLoRA 来实现更高效的内存微调。 7.1、PEFT 或参数高效微调 PEFT即参数高效微调是 Hugging Face 的一个新开源库可将预训练语言模型 (PLM) 高效地适应各种下游应用程序而无需微调所有模型参数。 PEFT 目前包括以下技术 LoRA大语言模型的低阶自适应[8] 前缀调优P-Tuning v2快速调优可与跨尺度和任务的通用微调相媲美 P-TuningGPT 也能理解[9] 即时调优规模的力量可实现参数高效的即时调优[10] 7.2、设置开发环境 首先需要安装必要的依赖我们将需要安装 accelerate 、 peft 、 transformers 、 datasets 和 TRL 库以利用最新的 SFTTrainer 。通过使用 bitsandbytes 将基本模型量化为 4 位。同时还将安装 einops 因为它是加载 Falcon 模型所必须的库。 pip install -q -U trl transformers accelerate githttps://github.com/huggingface/peft.git pip install -q datasets bitsandbytes einops wandb7.3、准备数据集 我们将从 AlexanderDoria/novel17_test 数据集中加载了 train 数据集分割。该数据集包含了一些法语小说的文本数据用于进行自然语言处理任务的训练和评估。该数据集中的文本将被用于训练模型以便让模型能够对法语小说进行自然语言处理。 from datasets import load_dataset#dataset_name timdettmers/openassistant-guanaco ###Human ,.,,,,,, ###Assistantdataset_name AlexanderDoria/novel17_test #french novels dataset load_dataset(dataset_name, splittrain)7.4、加载模型 加载预训练模型并使用 BitsAndBytesConfig 函数设置了量化配置将模型加载为 4 位并使用 torch.float16 计算数据类型。通过 from_pretrained 函数将预训练模型加载到 model 变量中并将量化配置传递给模型。 import torch from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig, AutoTokenizermodel_name TinyPixel/Llama-2-7B-bf16-shardedbnb_config BitsAndBytesConfig(load_in_4bitTrue,bnb_4bit_quant_typenf4,bnb_4bit_compute_dtypetorch.float16, )model AutoModelForCausalLM.from_pretrained(model_name,quantization_configbnb_config,trust_remote_codeTrue ) model.config.use_cache False加载预训练模型的分词器并将其配置为在序列结尾添加填充标记以便在使用模型进行推断时进行批处理。 tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue) tokenizer.pad_token tokenizer.eos_token创建一个 PEFT 配置对象以便在训练和评估模型时使用。 from peft import LoraConfig, get_peft_modellora_alpha 16 lora_dropout 0.1 lora_r 64peft_config LoraConfig(lora_alphalora_alpha,lora_dropoutlora_dropout,rlora_r,biasnone,task_typeCAUSAL_LM )7.5、加载训练器 我们将使用 TRL 库中的 SFTTrainer 它提供了transformers Trainer 的包装器以便使用 PEFT 适配器轻松地在基于指令的数据集上微调模型。让我们首先加载下面的训练参数。 from transformers import TrainingArgumentsoutput_dir ./results per_device_train_batch_size 4 gradient_accumulation_steps 4 optim paged_adamw_32bit save_steps 100 logging_steps 10 learning_rate 2e-4 max_grad_norm 0.3 max_steps 100 warmup_ratio 0.03 lr_scheduler_type constanttraining_arguments TrainingArguments(output_diroutput_dir,per_device_train_batch_sizeper_device_train_batch_size,gradient_accumulation_stepsgradient_accumulation_steps,optimoptim,save_stepssave_steps,logging_stepslogging_steps,learning_ratelearning_rate,fp16True,max_grad_normmax_grad_norm,max_stepsmax_steps,warmup_ratiowarmup_ratio,group_by_lengthTrue,lr_scheduler_typelr_scheduler_type, )然后最后将所有内容传递给训练器创建一个训练器对象以便对指定的语言模型进行训练。 from trl import SFTTrainermax_seq_length 512trainer SFTTrainer(modelmodel,train_datasetdataset,peft_configpeft_config,dataset_text_fieldtext,max_seq_lengthmax_seq_length,tokenizertokenizer,argstraining_arguments, )我们还将通过升级 float 32 中的层规范来预处理模型以获得更稳定的训练 for name, module in trainer.model.named_modules():if norm in name:module module.to(torch.float32)7.6、训练模型 接下来启动模型的训练过程以便通过反向传播算法来更新模型参数从而提高模型的性能。 trainer.train()在训练过程中模型应该很好地收敛如下所示 将训练后的模型保存到本地文件系统中以备后续使用。SFTTrainer 仅正确保存适配器而不是保存整个模型。 model_to_save trainer.model.module if hasattr(trainer.model, module) else trainer.model # Take care of distributed/parallel training model_to_save.save_pretrained(outputs)使用 LoraConfig 类加载预训练模型的配置信息并将其与现有的模型结合起来以获取一个新的模型。 lora_config LoraConfig.from_pretrained(outputs) model get_peft_model(model, lora_config)使用预训练模型生成一段新的文本以便测试模型的生成能力。 text Écrire un texte dans un style baroque sur la glace et le feu ### Assistant: Si jen luis éton device cuda:0inputs tokenizer(text, return_tensorspt).to(device) outputs model.generate(**inputs, max_new_tokens50) print(tokenizer.decode(outputs[0], skip_special_tokensTrue))将模型推送到 Hugging Face Hub 上可以与其他人共享和访问。 from huggingface_hub import login login()model.push_to_hub(llama2-qlora-finetunined-french)八、QLoRA 的局限性 QLoRA 是一种基于LoRALogical Reasoning Architecture的推理模型它在某些方面存在一些局限性。以下是一些已知的局限性 推理速度较慢使用四位的推理时QLoRA的推理速度相对较慢。目前QLoRA的四位推理系统尚未与四位矩阵乘法连接这可能会影响到其性能和速度。 Trainer恢复训练失败在使用Trainer来恢复LoRA的训练运行时可能会遇到失败的情况。这可能是由于一些内部问题或配置不正确导致的需要进一步调查和解决。 bnb4bitcomputetypefp16的不稳定性目前使用bnb4bitcomputetypefp16可能会导致不稳定性。特别是对于7B LLaMA任务只有80%的微调运行没有问题。虽然有解决方案但尚未以比特和字节的形式实现。 设置tokenizer.bostokenid为1为了避免产生困难建议将tokenizer.bostokenid设置为1。这可能是为了确保在使用QLoRA时开始标记BOS的ID被正确设置为1以避免潜在的问题。 九、总结 QLoRA 是一种基于量化的语言模型微调方法它可以将预训练的语言模型量化为低精度格式从而在保持模型性能的同时提高推理速度和减少模型存储空间。 本文我们探讨了如何使用 QLoRA 方法微调 LLaMA 2 模型包括加载预训练模型、设置量化配置、使用 SFTTrainer 类创建训练器对象、训练模型等步骤。我们还讨论了如何使用 BitsAndBytesConfig 函数将模型量化为 4 位并将 torch.float16 计算数据类型用于计算。这些操作可以帮助我们在保持模型性能的同时提高推理速度和减少模型存储空间从而使得在资源受限的环境下也能够进行语言模型的部署和应用。 十、References [1]. QLoRA GitHub https://github.com/artidoro/qlora [2]. QLoRA Pager https://arxiv.org/abs/2305.14314 [3]. Bits and Bytes (for 4-bit training): https://github.com/TimDettmers/bitsandbytes [4]. Guanaco HF Playground https://huggingface.co/spaces/uwnlp/guanaco-playground-tgi [5]. Guanaco Gradio Colab https://colab.research.google.com/drive/17XEqL1JcmVWjHkT-WczdYkJlNINacwG7?uspsharing [6]. Guanaco vs ChatGPT Colab https://colab.research.google.com/drive/1kK6xasHiav9nhiRUJjPMZb4fAED4qRHb?uspsharing [7]. PEFT GitHub https://github.com/huggingface/peft [8]. LoRA Pager https://arxiv.org/pdf/2106.09685.pdf [9]. P-Tuning Pager https://arxiv.org/pdf/2103.10385.pdf [10]. Prompt Tuning Pager https://arxiv.org/pdf/2104.08691.pdf [11]. SFTTrainer HF https://huggingface.co/docs/trl/main/en/sft_trainer 如果你对这篇文章感兴趣而且你想要了解更多关于AI领域的实战技巧可以关注「技术狂潮AI」公众号。在这里你可以看到最新最热的AIGC领域的干货文章和案例实战教程。
http://www.pierceye.com/news/618816/

相关文章:

  • 做文案策划需要看什么网站服装网站开发目的
  • 湖北定制型网站建设微信公众平台网页版
  • 需要做网站的公司有哪些免费网页模板之家
  • 淘客网站怎么备案合肥在线官网
  • 马上飞做的一些网站免费自助建站系统有哪些
  • 建网站投放广告赚钱wordpress全屏弹窗插件
  • 电子商务公司网站模版通辽网站建设公司
  • 国外社交网站建设苏州seo门户网
  • 小程序建站公司唐山网页搜索排名提升
  • 网站后台模板北京网络营销方案
  • 网站如何不被百度搜到浙江网站怎么做推广
  • 网站建设主机类型怎么选diy电子商城网站
  • 中文域名 怎么做网站门户网站建站系统
  • 网站上的个人词条怎么做的做网站推广有用吗
  • 定兴县住房和城乡建设局网站河南省新闻奖
  • 江西省建设工程协会网站查询郑州网站建设一汉狮网络
  • 网站是否含有seo收录功能素材下载平台网站源码
  • 西宁个人网站建设不错的网站建设
  • 海南综合网站两学一做电视夜校做网店网站
  • wordpress分类页面空白网站建设优化哪家好
  • 宁波模板建站哪家服务专业wordpress 神箭手
  • 一张图片网站代码视频生成链接在线工具
  • 网站品牌推广浙江手机版建站系统开发
  • 网站后台密码在哪个文件建站报价表
  • 昌乐营销型网站建设个人管理系统
  • 手机网站开发位置定位天津和平做网站公司
  • 搜搜提交网站入口国外wordpress空间
  • python 做网站 数据库做企业官网还有必要吗
  • 数据录入网站开发安阳县实验中学
  • 网站 风格镜子厂家东莞网站建设