【LLaMA-Factory】【Windows】:在windows操作系统配置大模型微调框架LLaMA-Factory

news2024/11/8 9:04:43

目录

序言

1 代码下载

2 模型下载

一、模型的作用

二、为何需要下拉模型

3 conda 环境安装

一、环境隔离与管理

二、简化安装与配置

三、提升性能与兼容性

4 安装依赖包

5 安装cuda 121版本

6 安装pytorch

一、PyTorch与LLaMA-Factory的兼容性

二、PyTorch的GPU加速能力

三、PyTorch的社区支持和生态系统

四、安装PyTorch的步骤

7 模型测试

Ⅰ启动webui

Ⅱ 模型加载

Ⅲ 模型使用

8 模型微调:中文增强

Ⅰ数据集

Ⅱ 配置

Ⅲ 训练结果


序言

在LLaMA-Factory框架中,环境配置包括PyTorch、CUDA、Python以及相应模型的安装,各自扮演了至关重要的角色。以下是对这些组件在LLaMA-Factory框架中作用的详细阐述:

PyTorch

作用:PyTorch是一个开源的机器学习库,它基于Python,并提供了丰富的工具和接口,使得开发者能够方便地构建和训练神经网络模型。在LLaMA-Factory框架中,PyTorch是核心的计算引擎,负责执行模型的训练和推理任务。

应用:开发者利用PyTorch定义模型结构、损失函数和优化器,并通过PyTorch提供的API进行模型的前向传播、损失计算、反向传播和参数更新。

CUDA

作用:CUDA是NVIDIA推出的一种并行计算平台和编程接口,它允许开发者利用NVIDIA的GPU进行高性能计算。在LLaMA-Factory框架中,CUDA是加速模型训练和推理的关键技术。

应用:通过CUDA,LLaMA-Factory能够利用GPU的并行计算能力,显著加快模型的训练和推理速度。此外,CUDA还提供了丰富的数学库和内存管理功能,进一步优化了模型的性能。

Python

作用:Python是一种高级编程语言,具有简单易学、语法清晰、功能强大等特点。在LLaMA-Factory框架中,Python是主要的编程语言,用于编写模型训练、推理和部署的代码。

应用:开发者使用Python编写脚本,调用PyTorch和CUDA提供的API,实现模型的构建、训练和推理。此外,Python还提供了丰富的库和工具,如NumPy、Pandas等,进一步简化了数据处理和模型评估的流程。

相应模型

作用:在LLaMA-Factory框架中,模型是训练和推理的核心对象。这些模型通常是预训练的,具有强大的语言理解和生成能力。通过微调这些模型,开发者可以使其适应特定的应用场景。

应用:开发者从Hugging Face等平台下载所需的预训练模型,并在LLaMA-Factory框架中进行微调。微调过程中,开发者可以根据具体任务调整模型的参数和配置,以优化模型的性能。微调后的模型可以用于各种自然语言处理任务,如文本生成、问答系统、情感分析等。

综上所述,PyTorch、CUDA、Python以及相应模型在LLaMA-Factory框架中各自扮演了重要的角色,共同支持了模型的高效训练和推理。这些组件的协同工作使得LLaMA-Factory框架能够为用户提供强大且灵活的大模型定制和开发能力。

1 代码下载

https://github.com/hiyouga/LLaMA-Factory

下载后解压到对应文件夹

2 模型下载

下面两种方式二选一 推荐使用第二种方式

我下载了两个模型一个是Qwen 一个是Meta-Llama-3-8B-Instruc

2.1 git下载

git clone 魔搭社区

有几个很大的文件拉取不下来,直接下载

2.2 命令行下载

也可以选择其他模型

作为一个初学者我这里有一个以后,就是在我看来LLaMA-Factory 已经是一个大模型语言训练框架了,为什么还要拉取模型呢?

LLaMA-Factory是一个低代码的大规模语言模型(LLM)训练框架,主要面向研究人员和开发者,旨在简化大型语言模型的微调、评估和部署过程。在下载LLaMA-Factory代码后,下拉模型是至关重要的一步,这个模型的作用主要体现在以下几个方面:

一、模型的作用

  1. 预训练基础:
    • 下拉的模型通常是已经经过大规模数据预训练的,具备了一定的语言理解和生成能力。
    • 这些预训练模型可以作为微调的基础,通过针对特定任务或领域的数据进行微调,进一步提升模型的性能。
  1. 定制化需求:
    • 不同的应用场景和任务可能需要不同的语言模型。
    • 通过下拉并选择适合的预训练模型,开发者可以根据实际需求进行定制化训练,以满足特定任务或领域的需求。
  1. 提升效率:
    • 使用预训练模型进行微调相比从头开始训练新模型,可以大大节省时间和计算资源。
    • 预训练模型已经学习到了大量的语言知识和模式,微调过程只需要在这些基础上进行微调即可,从而提高了训练效率。

二、为何需要下拉模型

  1. 模型多样性:
    • LLaMA-Factory支持多种大型语言模型,包括但不限于LLaMA、BLOOM、Mistral等。
    • 通过下拉选择,开发者可以根据实际需求选择最适合的模型进行微调。
  1. 便捷性:
    • LLaMA-Factory提供了简洁明了的操作界面和丰富的文档支持。
    • 下拉模型的操作简单方便,开发者可以轻松上手并快速实现模型的微调与优化。
  1. 更新与维护:
    • 随着技术的不断进步和模型的持续更新,下拉模型可以确保开发者使用的是最新版本的模型。
    • 这有助于开发者保持与最新技术的同步,并充分利用新技术带来的性能提升和优势。

综上所述,下拉模型在LLaMA-Factory中扮演着至关重要的角色。它不仅提供了预训练的基础,还满足了定制化需求,并提高了训练效率。同时,通过下拉选择模型,开发者可以轻松上手并快速实现模型的微调与优化。

3 conda 环境安装

至于为什么安装conda?如下

在本地配置LLaMA-Factory时,选择配置conda环境主要基于以下几个原因:

一、环境隔离与管理

  1. 环境隔离:
    • conda环境允许用户为不同的项目或任务创建独立的虚拟环境。这样,每个项目都可以有自己的Python版本、依赖库和配置,而不会相互干扰。
    • 在配置LLaMA-Factory时,使用conda环境可以确保该项目的依赖与其他项目或系统级的Python环境隔离,从而避免潜在的冲突。
  1. 依赖管理:
    • conda是一个强大的包管理器,它可以轻松地安装、更新和卸载Python包及其依赖项。
    • 使用conda环境,用户可以轻松地管理LLaMA-Factory所需的依赖库,如PyTorch、Gradio等,而无需担心这些库与其他项目或系统级Python环境的兼容性问题。

二、简化安装与配置

  1. 一键安装:
    • conda提供了丰富的预编译包(conda packages),这些包已经过测试和验证,可以确保在用户的系统上稳定运行。
    • 通过conda环境,用户可以一键安装LLaMA-Factory及其所有依赖项,而无需手动下载和编译源代码,从而大大简化了安装过程。
  1. 自动配置:
    • conda环境可以自动处理许多配置问题,如环境变量设置、库路径等。
    • 这使得用户无需手动配置这些复杂的设置,即可轻松运行LLaMA-Factory。

三、提升性能与兼容性

  1. 性能优化:
    • conda环境允许用户为不同的项目选择最优的Python版本和依赖库版本,从而可能提升项目的性能。
    • 此外,conda还提供了许多性能优化工具,如conda-forge等,可以帮助用户进一步优化项目的性能。
  1. 兼容性保障:
    • conda环境可以确保LLaMA-Factory在不同的操作系统和硬件平台上稳定运行。
    • 通过conda环境,用户可以轻松地解决因操作系统或硬件差异而导致的兼容性问题。

综上所述,配置conda环境可以为用户在本地配置LLaMA-Factory时提供诸多便利和优势。它不仅有助于环境隔离与管理、简化安装与配置过程,还可以提升项目的性能和兼容性。因此,在配置LLaMA-Factory时,选择使用conda环境是一个明智的选择。

初始化

激活环境

这个时候要重启,不然切换环境不生效

4 安装依赖包

在 llama_fama_factory环境下 进入LLaMA项目,

pip install -e .[metrics,modelscope,qwen]

5 安装cuda 121版本

https://developer.nvidia.com/cuda-12-1-1-download-archive

增加环境变量(这一步可能安装包给你做了,你可以看一下,如果已经有环境变量了,就不要更改了)

重启电脑

输入 nvcc -V

显示如下则安装成功

6 安装pytorch

https://download.pytorch.org/whl/torch_stable.html

注意后面121是你的cuda版本,312是你的python版本,win是操作系统

pip install ".\torch-2.2.1+cu121-cp312-cp312-win_amd64.whl" --user

pip install tensorboard 

至于为什么使用pytorch?

在本地配置LLaMA-Factory时,安装PyTorch是一个关键步骤,原因主要有以下几点:

一、PyTorch与LLaMA-Factory的兼容性

LLaMA-Factory是一个易于使用的LLM(大型语言模型)微调框架,它支持多种模型,如LLaMA、BLOOM、Mistral等。为了高效地进行模型训练和微调,LLaMA-Factory依赖于PyTorch这一深度学习框架。PyTorch提供了丰富的API和工具,使得LLaMA-Factory能够方便地实现模型的加载、训练、推理等功能。

二、PyTorch的GPU加速能力

LLaMA-Factory在进行模型训练和微调时,需要处理大量的数据和计算任务。PyTorch支持CUDA,可以利用NVIDIA的GPU进行高效的并行计算,从而大大加速模型的训练和推理过程。在配置LLaMA-Factory时,安装与CUDA版本兼容的PyTorch是至关重要的,以确保能够充分利用GPU的加速能力。

三、PyTorch的社区支持和生态系统

PyTorch拥有一个庞大的社区和丰富的生态系统,这意味着在使用LLaMA-Factory时,如果遇到问题或需要额外的功能,可以很容易地找到相关的解决方案或库。此外,PyTorch的文档和教程也非常完善,有助于用户更快地熟悉和掌握LLaMA-Factory的使用方法。

四、安装PyTorch的步骤

在本地配置LLaMA-Factory时,安装PyTorch通常包括以下几个步骤:

  1. 检查CUDA版本:首先,需要确定系统中安装的CUDA版本,以确保选择与之兼容的PyTorch版本。
  2. 下载并安装PyTorch:根据CUDA版本,从PyTorch官网获取相应的安装命令,并在终端中执行该命令以安装PyTorch。
  3. 验证安装:安装完成后,可以通过运行简单的PyTorch代码来验证安装是否成功。例如,可以检查PyTorch是否能够正确识别和利用GPU资源。

综上所述,安装PyTorch是在本地配置LLaMA-Factory时的一个必要步骤,它确保了LLaMA-Factory能够高效地利用GPU资源进行模型训练和微调,并提供了丰富的社区支持和生态系统

7 模型测试

Ⅰ启动webui

使用vccode打开LLaMA-Factory项目

切换到我们配置好的环境下

conda activate llama_factory

设置环境变量

set USE_MODELSCOPE_HUB=1

启动ui界面

python src/webui.py

界面

Ⅱ 模型加载

导入模型

选择对应的模型名字和自己模型的地址如下图

加载模型

Ⅲ 模型使用

选择chat模式

问题:若干只鸡和兔子关在同一个笼子里,从上边数,有35个头,从下边数,有94只脚,问,鸡和兔子各有几只

结果 如下 会比较慢

8 模型微调:中文增强

Ⅰ数据集

自带的数据集,不需要准备

Ⅱ 配置

选择跟测试相同的模型

选择lora微调

模式为训练模式

数据集选择为alpaca_gpt4_zh

数据集的样式如下

更改设置,改为512,主要是咱们的硬件扛不住

点击开始训练

启动之后如果连接超时数据集拉取不下来,就上社区自己拉取

魔搭社区

将json 文件放入到项目的data目录下

修改dataset_info.json文件

如下图

数据集名字为dataset_info.json的名字,然后开始训练

Ⅲ 训练结果

因为个人电脑显卡扛不住,我运行之后溢出了。

下面说明一下模型合并,我是autoDL线上组的显卡跑的

详细导出参数:

MAX shard size

这个参数定义了模型分片(shard)的最大大小。在导出大型模型时,由于内存或存储限制,模型可能需要被分割成多个较小的部分(即分片)进行存储和处理。通过设置MAX shard size,用户可以控制每个分片的大小,以确保它们能够适配到目标存储或计算环境中。

Export quantization bit

此参数用于指定模型导出时量化的位数。量化是一种减少模型大小和加速推理速度的技术,它通过将模型参数从较高的精度(如32位浮点数)降低到较低的精度(如8位整数)来实现。通过设置Export quantization bit,用户可以控制量化的粒度,从而影响模型的压缩率和性能。

Export quantization dataset

这个参数指定了一个数据集,用于在导出模型时执行量化操作。在量化过程中,模型会使用这个数据集进行校准,以确保量化后的模型在推理时具有足够的准确性。选择适当的量化数据集对于获得良好的量化效果至关重要。

Export device

此参数指定了模型导出时所使用的设备。在分布式或并行计算环境中,模型可以在不同的设备上(如CPU、GPU或TPU)进行导出。通过设置Export device,用户可以指定在哪个设备上执行导出操作,以充分利用可用的计算资源。

Export dir

这个参数定义了模型导出时的目标目录。在导出模型时,用户需要指定一个存储位置来保存导出的模型文件。通过设置Export dir,用户可以控制模型文件的存储路径和文件名,以便于后续的管理和使用。

HF Hub ID

此参数与Hugging Face Hub相关,它指定了一个唯一的标识符(ID),用于将导出的模型上传到Hugging Face Hub上。Hugging Face Hub是一个流行的机器学习模型库,用户可以在其中共享和下载模型。通过设置HF Hub ID,用户可以轻松地将自己的模型上传到Hugging Face Hub上,以便与其他人共享和使用。

导出的模型如下图:

卸载模型,换为我们自己的模型

模型测试,以框中的问答为预期

结果:

显然,标准模式是可以的

同义词替换也是可以的,训练集中并没有“你能做啥?”,只有“你能做什么?”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2228578.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习基础(2024-10-30更新到tensor相关)

1. 名词解释 FFN FFN : Feedforward Neural Network,前馈神经网络馈神经网络是一种基本的神经网络架构,也称为多层感知器(Multilayer Perceptron,MLP)FFN 一般主要是包括多个全连接层(FC)的网络&#xff…

逆变器前级倍压方案【工作日志】

EG3525S: 价格便宜,能买到,资料丰富,成熟,有人用 C2987456_AC-DC控制器和稳压器_EG3525S_规格书_WJ93166.PDF 发现一个好玩的,这个芯片还可以做大功率的降压控制使用: EG3525S推挽半桥PWM控制芯片数…

企业数字化转型该如何衡量?转型的好不好,主要看哪些方面?

​大家发现一个现象没?就是明明可以简单几句话说清楚的事,有些人就喜欢长篇大论,写个几千上万字,甚至从概念、定义开始聊,讲了半天都还没讲到重点。就给人一种强行“凑字”的感觉... 其实这个问题很简单的,…

html生成图片方案总结

动态图片生成是我们日常开发中经常遇到的需求,比如宣传海报生成,电商商品图动态生成等,本文总结出三种常见的 HTML 生成图片的方案。 一、html2canvas html2canvas库能够将 HTML 元素渲染为 Canvas,然后将其转换为图片。它的优点…

瑞芯微RK3566/RK3568 Android11下该如何默认屏蔽导航栏/状态栏?看这篇文章就懂了

本文介绍瑞芯微RK3566/RK3568在Android11系统下,默认屏蔽导航栏/状态栏方法,使用触觉智能Purple Pi OH鸿蒙开发板演示,搭载了瑞芯微RK3566芯片,类树莓派设计,Laval官方社区主荐,已适配全新OpenHarmony5.0 R…

#渗透测试#SRC漏洞挖掘# 信息收集-Shodan之网页版

Shodan网页版概述 Shodan是一个专门用于搜索互联网上各种设备和服务的搜索引擎,它能够发现并列出暴露在互联网上的设备,如服务器、路由器、交换机、网络摄像头等。与传统的搜索引擎不同,Shodan并不为网页内容建立索引,而是寻找开放…

第二十一章 Vue组件通信之prop校验及单向数据流

目录 一、什么是Prop 1.1. Prop传递数据代码示例图 1.2. 演示代码App.vue 1.3. 演示代码UserInfo.vue 二、props 校验 2.1. props校验简单写法 2.1.1. 演示代码App.vue 2.1.2. 演示代码BaseProgress.vue 2.2. props校验完整写法 2.2.1. 演示代码BaseProgress.vue 2.…

哈工大《理论力学》第九版课后答案解析及笔记PDF

第九版序 哈工大《理论力学》初版于1961年,先后再版8次,曾获得首届国家优秀教材奖和国家级教学成果奖。本书第8版为“十二五”普通高等教育本科国家级规划教材,并于2021年被国家教材委员会评为首届全国教材建设奖全国优秀教材一等奖。 本书…

CloudSat数据产品数据下载与处理 (matlab)

CloudSat数据下载 这个数据我之前和CALIPSO弄混了,后来发现它们虽然是同一个火箭上去,但是数据产品却在不同的平台下,CloudSat的数据更加关注云的特性,包括云覆盖、云水当量、云分类数据。 数据网址在:CloudSat网址 …

Linux初阶——线程(Part2):互斥同步问题

一、互斥锁 1、CPU 运算过程 执行完整个语句后,才会把数据写入内存;如果执行时被中断,那么数据和上下文就会保存到线程的 TCB,但数据并不会被写入内存。 1.1. 当 CPU 执行完整个语句时 CPU 最终执行完整个语句的过程 就用上图举…

Linux学习_10

第九章Linux文件系统权限 主要包括:文件的一般权限,特殊权限,ACL权限,权限掩码umask 文件的一般权限 文件详细信息 文件权限构成 权限针对三类对象定义 owner:所有者,缩写u group :所属组&#…

Easysearch 与 LLM 融合打造知识库系统

文章目录 一、LangChain 简介二、RAG 产生的背景及其局限性三、RAG 工作流程四、 Easysearch 结合 LLM 实现 RAG(1)Easysearch 简介(2)结合实现RAG 五、 Easysearch 结合 LLM 实现 RAG 的优势(1)提高检索准…

【SSM详细教程】-16-SSM整合超详细讲解

精品专题: 01.《C语言从不挂科到高绩点》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12753294.html?spm1001.2014.3001.5482 02. 《SpringBoot详细教程》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12789841.html?spm1001.20…

一个图像处理的实验设计

在Rafael Gonzalez和Richard Woods的《数字图像处理》中有一道这样的实验设计题,我发现特别适合说明多个阈值的全局阈值分割的示例。 我嫌他说话啰嗦,修改了一下作为考试题。 基本流程 图像分割 选取中间灰度级的区域标记。 2. 形态学后处理 开运…

如何在Linux系统中使用Nginx部署静态网站

如何在Linux系统中使用Nginx部署静态网站 Nginx简介 安装Nginx 在Debian/Ubuntu系统中安装 在CentOS/RHEL系统中安装 启动Nginx服务 验证Nginx是否正在运行 配置Nginx服务器块 编辑服务器块配置 示例服务器块配置 创建网站根目录 准备静态网站内容 创建示例HTML页面 测试Ngi…

Mysql报错注入之floor报错详解

updatexml extractvalue floor 是mysql的函数 groupbyrandfloorcount 一、简述 利用 select count(),(floor(rand(0)2))x from table group by x,导致数据库报错,通过 concat 函数,连接注入语句与 floor(rand(0)*2)函数,实现将…

Redis 命令集 (超级详细)

目录 Redis 常用命令集 string类型 hash类型 list类型 set类型 zset类型 bitmap 类型 geo 类型 GEOADD (添加地理位置的坐标) GEOPOS (获取地理位置的坐标) GEODIST (计算两个位置之间的距离) GEOHASH (返回一个或多个位置对象的 geohash 值) GEORADIUS (根据用户…

nuxt数据库之增删改查,父组件子组件传值

nuxt学到数据库这里,就涉及到响应数据,父组件向子组件传值,子组件向父组件传值,最终还是需要掌握vue3的组件知识了。学习真的是一个长期的过程,不管学习了什么知识,有多少,都应该及时的记录下来…

如何在Linux系统中使用Zabbix进行监控

如何在Linux系统中使用Zabbix进行监控 Zabbix简介 安装Zabbix 在Debian/Ubuntu系统中安装 在CentOS/RHEL系统中安装 配置Zabbix数据库 创建数据库 导入数据库 配置Zabbix服务器 访问Zabbix Web界面 完成初始配置 配置Zabbix Agent 安装Agent 配置Agent 添加主机到Zabbix 创…

《Counterfeiting Scalable Detection Image Based System for E-commerce》中文校对版

文章汉化系列目录 文章目录 文章汉化系列目录摘要CCS 概念:关键词1 引言2 E-CoS2.1 e-CoS架构2.2 e-CoS 模块2.2.1 图像相似度模块2.2.2 索引和搜索模块2.2.3 索引2.2.4 搜索 3 性能考量3.1 示例 13.2 示例 23.3 示例 3 4 结论致谢 摘要 电子商务中的假冒问题通过本…