首页 > 其他分享 >学大模型必看!手把手带你从零微调大模型!

学大模型必看!手把手带你从零微调大模型!

时间:2024-08-06 18:54:46浏览次数:15  
标签:yi 必看 AI 模型 微调 yaml 学大 lora

今天分享一篇技术文章,你可能听说过很多大模型的知识,但却从未亲自使用或微调过大模型。

今天这篇文章,就手把手带你从零微调一个大模型。

大模型微调本身是一件非常复杂且技术难度很高的任务,因此本篇文章仅从零开始,手把手带你走一遍微调大模型的过程,并不会涉及过多技术细节。

希望通过本文,你可以了解微调大模型的流程。

1,微调简介

微调大模型需要非常高的电脑配置,比如GPU环境,相当于你在已经预训练好的基础上再对大模型进行一次小的训练。

但是不用担心,本篇文章会使用阿里魔塔社区提供的集成环境来进行,无需使用你自己的电脑配置环境。

你只需要有浏览器就可以完成。

本次微调的大模型是零一万物的 Yi 开源大语言模型,当然微调其他大模型的过程和原理也有差不多。

这里说明一下,阿里魔塔社区对于新用户提供了几十小时的免费GPU资源进行使用,正好可以来薅一波羊毛,学习一下大模型的微调

话不多说,直接开始。

2. 账号和环境准备

首先你需要注册和登录魔搭的账号:modelscope.cn/home

注册完成后,登录这个模型网址:

www.modelscope.cn/models/01ai…**.**

然后按照下面的箭头操作。

选择完方式二:GPU环境后,点击“启动”。

启动大概需要2分钟,等GPU环境启动好以后点击"查看NoteBook"进入。

魔塔社区内置了JupyterLab的功能,你进入之后,可以找到 Notebook 标签,新建一个Notebook(当然你在terminal 里执行也没问题)。

如下箭头所示,点击即可创建一个新的 Notebook 页面。

增添一个代码块,并且执行以下命令(点击左侧的运行按钮运行该代码块,下同,这一步是安装依赖库)。

!pip3 install --upgrade pip!pip3 install bitsandbytes>=0.39.0

拉取 LLaMA-Factory,过程大约需要几分钟

!git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git

接下来需要去 Launcher > Terminal 执行(按照图片剪头指示操作)。

安装依赖的软件,这步需要的时间比较长。

# ⚠️下面两行命令在刚启动的Terminal中执行⚠️cd LLaMA-Factorypip3 install -e ".[torch,metrics]"

等以上所有步骤完成后,再进行下面的操作。

3. 下载模型

零一万物的 Yi 开源大语言模型的权重可以在HuggingFace和ModelScope上找到,这里我选择从ModelScope上下载。

零一万物的所有开源模型链接在这里:

模型下载需要一定的时间,这里选择了最小的Yi-1.5-6B-chat模型进行实验。

Yi-1.5-6B-chat模型大小大约12G,下载大约需要10分钟(取决于网速)。

接下来,你通过下面的命令就可以在 notebook 里执行下载(在 terminal也一样,如果需要在terminal执行需要去掉前面的!)。

!git clone https://www.modelscope.cn/01ai/Yi-1.5-6B-Chat.git

这一步,耐心等待下载完成即可。

4. 微调Yi模型实战

等以上所有步骤完成后,准备工作就做好了,现在可以开始准备微调了。

⚠️注意:虽然本篇文章仅仅是简单的过一遍微调的流程,但是不要低估他的难度。微调跑起来很容易,但是跑出很好的结果非常的难。

站在巨人的肩膀上开始这次实战,这里选择llama_factory。

LLaMA Factory是一款开源低代码大模型微调框架,集成了业界广泛使用的微调技术。
5. 开始微调

a. 创建微调训练相关的配置文件

在左侧的文件列表,Llama-Factory的文件夹里,打开examples\train_qlora(注意不是 train_lora)下提供的llama3_lora_sft_awq.yaml,复制一份并重命名为yi_lora_sft_bitsandbytes.yaml。

这个文件里面写着和微调相关的关键参数。

打开这个文件,将第一行model_name_or_path更改为你下载模型的位置。

### modelmodel_name_or_path: <你下载的模型位置,不要带括号,比如我写了../Yi-1.5-6B-Chat>

同样修改其他行的内容,下面是我的修改,你可以逐行对比一下,有不一致或缺少的就添加一下。

### modelmodel_name_or_path: ../Yi-1.5-6B-Chatquantization_bit: 4### methodstage: sftdo_train: truefinetuning_type: loralora_target: all### datasetdataset: identitytemplate: yicutoff_len: 1024max_samples: 1000overwrite_cache: truepreprocessing_num_workers: 16### outputoutput_dir: saves/yi-6b/lora/sftlogging_steps: 10save_steps: 500plot_loss: trueoverwrite_output_dir: true### trainper_device_train_batch_size: 1gradient_accumulation_steps: 8learning_rate: 1.0e-4num_train_epochs: 3.0lr_scheduler_type: cosinewarmup_ratio: 0.1bf16: true# ddp_timeout: 180000000### evalval_size: 0.1per_device_eval_batch_size: 1eval_strategy: stepseval_steps: 500

从上面的配置文件中可以看到,本次微调的数据集是 identity。

那这个文件里面写着什么呢?

微调数据集是“自我认知”,也就是说当你问模型“你好你是谁”的时候,模型会告诉你我叫name由author开发。

如果你把数据集更改成你自己的名字,那你就可以微调一个属于你自己的大模型。

这一步,你可以将 identity.json 中的 {{name}} 字段替换为你的名字来微调一个属于自己的大模型。

保存刚才对于 yi_lora_sft_bitsandbytes.yaml 文件的更改,回到终端terminal。

在 LLaMA-Factory 目录下,输入以下命令启动微调脚本(大概需要10分钟)

llamafactory-cli train examples/train_qlora/yi_lora_sft_bitsandbytes.yaml

看到进度条就是开始微调了。

运行过程大概需要10分钟,当你看到下面这个界面的时候,微调过程就结束了。

6. 推理测试

微调后的模型有什么不同的地方呢?

这里加载微调后模型进行推理,测试微调前后变化。

参考Llama-Factory文件夹中,examples\inference下提供的llama3_lora_sft.yaml,复制一份,并重命名为 yi_lora_sft.yaml

将内容更改为,并且保存(一定记得保存)****。

model_name_or_path: <和之前一样,你下载的模型位置,比如我写了../Yi-1.5-6B-Chat>adapter_name_or_path: saves/yi-6b/lora/sfttemplate: yifinetuning_type: lora

回到刚刚结束微调的终端Terminal,运行下面的推理命令(同样在Llama-Factory目录下运行)。

llamafactory-cli chat examples/inference/yi_lora_sft.yaml

稍微等待一下模型加载,然后就可以聊天了。

可以看到模型的自我身份认知被成功的更改了。

自我身份认知更改成为数据集规定的样子了,同时也保持了通用对话能力。

那么,和没有经过微调之前的模型对比有什么差别呢?

重复上面的步骤,将llama3.yaml复制并重命名为yi.yaml,将内容更改为以下的内容,并保存(一定记得保存)

model_name_or_path: ../Yi-1.5-6B-Chattemplate: chatml

回到终端Terminal,运行下面的推理命令:

llamafactory-cli chat examples/inference/yi.yaml

可以提问和刚才同样的问题,看到模型的原始回答。

基于本实验,你就完成了一个简单的微调,完整的走了一遍模型的微调过程,是不是还挺简单的?

如何系统的去学习大模型LLM ?

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料 包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来

标签:yi,必看,AI,模型,微调,yaml,学大,lora
From: https://blog.csdn.net/z551646/article/details/140953592

相关文章

  • 【大模型书籍PDF】LangChain入门指南:构建高可复用、可扩展的LLM应用程序( 推荐)
    今天又来给大家推荐一本大模型方面的书籍<Langchain入门指南>这本书专门为那些对自然语言处理技术感兴趣的读者提供了系统的LLM应用开发指南。全书分为11章,从LLM基础知识开始,通过LangChain这个开源框架为读者解读整个LLM应用开发流程。......
  • 想学习人工智能、大语言模型?这份学习路线与免费学习资源最值得推荐
    想学习人工智能吗?但不知道如何开始?要熟练掌握人工智能相关的技术,光学习很多课程是不够的。为了摆脱只是跟着教程学习,你需要亲自动手,从头开始编写算法,动手实践,并通过使用人工智能解决问题来做一些有趣的边项目。这篇文章试图创建一份免费的课程路径,希望对大家学习有帮助。(注......
  • 爬虫“拥抱大模型”,有没有搞头?
    前言大模型是当前最热门的研究方向之一,千行百业加速“拥抱大模型”。如今,越来越多的研究机构和企业选择开放大模型的源代码和训练数据,促进了学术界和工业界的合作与交流,推动了技术进步,相关生态越来越好。这也使得,无论体量大小,各公司都有参与的机会,越来越多的大模型开始支持多模......
  • Stable Fast 3D技术解析 - Stability AI推出0.5秒将图片转为3D模型
    一、介绍StableFast3D,由StabilityAI推出,是一项颠覆性的3D建模技术,它通过AI算法将单张图片迅速转换为高质量的3D模型,极大地缩短了传统3D建模的时间,同时保持了模型的细节和真实感。关键要点StableFast3D能在仅0.5秒内从单张图片生成高质量的3D资产。S......
  • 大模型与人工智能有什么区别?看完涨知识了
    前言人工智能是一个广泛的概念,涵盖了多个领域和技术,旨在实现各种智能化应用。大模型则是人工智能领域中的一个特定技术或方法,主要通过构建规模庞大的模型来处理复杂任务。随着科技的飞速发展,人工智能(ArtificialIntelligence,简称AI)已经成为了我们生活中不可或缺的一部分。......
  • 亚马逊、速卖通卖家必看:自养号测评助力转化率提升
    在亚马逊、速卖通等电商平台的激烈竞争中,卖家们深谙流量之于店铺转化率的重要性,而测评补单作为提升业绩的关键策略之一,其重要性不言而喻。它不仅是日常运营中不可或缺的一环,更是助力产品在众多竞品中脱颖而出的竞争利器。特别是在追求最大化产品曝光与转化率的过程中,Listing的......
  • 多模态大模型 intern_vl 2.0版本解读
    目录更大规模的语言模型多模态输入多任务输出性能表现github:GitHub-OpenGVLab/InternVL:[CVPR2024Oral]InternVLFamily:APioneeringOpen-SourceAlternativetoGPT-4o.接近GPT-4o表现的可商用开源多模态对话模型论文:https://arxiv.org/pdf/2404.16821(还是......
  • 神-从零构建大模型,尚未发布,GitHub标星22k。
       从零构建大模型-即将于今年10月底发布的书籍,github已经吸引了惊人的21.7k标星!作者是威斯康星大学麦迪逊分校的终身教授,在GitHub、油管、X上拥有大量粉丝,是一位真正的大佬。免费获取:神-从零构建大模型,尚未发布,GitHub标星22k!!内容截图......
  • VannaAI(带有 Ollama 和 ChromaDB)示例程序在训练模型步骤失败
    我开始测试VannaAI,并且我正在运行一个基于使用Ollama、ChromaDB为Postgres生成SQL的示例程序:fromvanna.ollamaimportOllamafromvanna.chromadbimportChromaDB_VectorStoreclassMyVanna(ChromaDB_VectorStore,Ollama):def__init__(self,confi......
  • 使用OpenAI大模型与中专API进行文本生成的实战教程
    引言在人工智能技术的快速发展中,大型语言模型(LLM)如OpenAI的GPT系列,已成为处理自然语言任务的强大工具。本文将介绍如何通过中专API(http://api.wlai.vip)调用OpenAI的大模型进行文本生成。我们将展示如何编写一个简单的Python脚本,实现与API的交互,并生成高质量的文本内容。环......