本地离线模型搭建指南-LLaMA-Factory训练框架及工具
搭建一个本地中文大语言模型(LLM)涉及多个关键步骤,从选择模型底座,到运行机器和框架,再到具体的架构实现和训练方式。以下是一个详细的指南,帮助你从零开始构建和运行一个中文大语言模型。
本地离线模型搭建指南将按照以下四个部分展开
- 中文大语言模型底座选择依据
- 本地运行显卡选择
- RAG架构实现
- LLaMA-Factory训练框架及工具
4 训练架构及工具
4.1 为什么要使用LLaMA-Factory进行训练
LLaMA-Factory是一个专为大模型训练设计的开源平台,具有以下几个优势:
- 快速学习和应用: 对于没有微调大模型经验的用户,通过学习LLaMA-Factory后,可以快速地训练出自己需要的模型。
- 理解微调技术: 对于技术人员,LLaMA-Factory提供了一个很好的学习平台,通过阅读源码,可以深入了解大模型的微调技术。
- 捷径: LLaMA-Factory为用户提供了一条走向大模型微调的捷径,使用户能够快速掌握相关概念和技术。
4.2 LLaMA-Factory训练所能解决的问题
- 大模型的实际应用: 企业想要利用大模型进行实际应用时,必须懂得微调的过程,而LLaMA-Factory提供了一个实用的平台来实现这一点。
- 个性化模型训练: 用户可以通过LLaMA-Factory快速训练出适合自己需求的模型,满足不同领域的具体要求。
- 技术理解和提升: 技术人员可以通过LLaMA-Factory的源码学习,进一步理解大模型的微调技术,并应用于实际项目中。
4.3 LLaMA-Factory的训练步骤和方法
4.3.1 模型训练阶段
- 预训练阶段(Pre-Training):
预训练是大模型训练的初始阶段,主要目的是通过大规模数据集训练基础模型。这一步是最消耗计算资源的,通常需要使用大量的计算集群。 - 监督微调阶段(Supervised Finetuning, SFT):
这个阶段的训练数据质量较高,通常由人工筛选或生成。经过这个阶段的模型已经具备上线的能力。 - 基于人类反馈的强化学习(RLHF):
- 奖励建模阶段(Reward Modeling): 在这个阶段,模型不仅输出预测的内容,还输出一个奖励值(评分值),用于后续的强化学习。
- 强化学习阶段(Reinforcement Learning): 通过奖励模型对多个输出进行评分,并基于评分进行加权,反向传播调整模型参数。
4.3.2 模型训练模式
根据具体需求,可以选择不同的训练模式:
- 模式一: 基于base模型 + 领域任务的SFT
- 模式二: 基于base模型 + 领域数据 continue pre-train + 领域任务SFT
- 模式三: 基于base模型 + 领域数据 continue pre-train + 通用任务SFT + 领域任务SFT
- 模式四: 基于base模型 + 领域数据 continue pre-train + 通用任务与领域任务混合SFT
- 模式五: 基于base模型 + 领域数据 continue pre-train(混入SFT数据 + 通用任务与领域任务混合SFT)
- 模式六: 基于chat模型 + 领域任务SFT
- 模式七: 基于chat模型 + 领域数据 continue pre-train + 领域任务SFT
4.3.3 是否需要继续预训练(continue pre-train)
- 数据集差异大: 如果领域任务的数据集与预训练的数据集差异较大,建议进行continue pre-train。
- 数据量较大: 如果领域任务的数据量较大(token在1B以上),并且只追求领域任务的效果,也建议进行continue pre-train。
4.3.4 选择chat模型还是base模型
- base模型: 如果希望模型的通用能力不下降,建议选择base模型进行多任务混合训练。
- chat模型: 如果只追求领域任务的效果,可以选择chat模型进行领域任务的SFT。
4.4 实践建议
- 资源充足: 如只考虑领域任务效果,建议选择模式二;如考虑模型综合能力,建议选择模式五。
- 资源有限: 建议选择模式六。
- 一般情况下: 不进行RLHF微调。
4.5 开发工具库
LLaMA-Factory使用了一些关键的开发工具库,包括Transformers和PEFT库,后者提供了多种高效的微调方法,如LoRA、AdaLoRA、P-tuning等。
通过以上步骤和方法,用户可以有效地使用LLaMA-Factory进行大模型的微调训练,满足不同领域和任务的需求。
4.6 本地LLaMA-Factory训练模型实践运行配置
底座 | 包含模型 | 模型参数大小 | 机器配置 | 显存大小 | 是否可运行 |
---|---|---|---|---|---|
ChatGLM | ChatGLM3-6B | 6B | CPU 16核心 32G内存 | 无 | 未测试 |
ChatGLM | ChatGLM3-6B | 6B | 显卡4070Ti | 16G | 可以 |
ChatGLM | ChatGLM4-9B | 9B | 显卡4070Ti | 16G | 未测试 |
LLaMA | Chinese-LlaMA2 | 7B | 显卡3060Ti | 8G | 未测试 |
Qwen | Qwen1.5 | 7B | 显卡4070Ti | 16G | 可以 |
更多详细信息,请访问
从LLaMA-Factory项目认识微调
LLaMA-Factory QuickStart
5 结论
搭建本地中文大语言模型是一个复杂而系统的工程,涉及模型选择、硬件配置、框架选择、架构实现、训练工具和方法等多个方面。通过合理选择和配置,可以在本地成功搭建并运行一个高性能的中文大语言模型。
更多详细信息,请访问
从LLaMA-Factory项目认识微调
LLaMA-Factory QuickStart
相关文章:
本地离线模型搭建指南-LLaMA-Factory训练框架及工具
搭建一个本地中文大语言模型(LLM)涉及多个关键步骤,从选择模型底座,到运行机器和框架,再到具体的架构实现和训练方式。以下是一个详细的指南,帮助你从零开始构建和运行一个中文大语言模型。 本地离线模型搭…...
数智化金融采购系统特点
数智化金融采购系统是郑州信源公司结合众多金融行业采购特点,采用流程优化再造的理念,为银行、保险、证券、交易所等金额机构打造的细分行业产品,助力金融行业采购合规管理、风险防范、成本管理和效率提升。 系统特点 1、全业务覆盖&#x…...

使用 SwiftUI 为 macOS 创建类似于 App Store Connect 的选择器
文章目录 前言创建选择器组件使用选择器组件总结前言 最近,我一直在为我的应用开发一个全新的界面,它可以让你查看 TestFlight 上所有可用的构建,并允许你将它们添加到测试群组中。 作为这项工作的一部分,我需要创建一个组件,允许用户从特定构建中添加和删除测试群组。我…...

Python26 Lambda表达式
1.什么是lambda表达式 lambda 是 Python 中的一个关键字,用于定义简单的匿名函数。与 def 关键字定义的标准函数不同,lambda 函数主要用于需要一个函数对象作为参数的简短操作。lambda 函数的设计哲学是简洁,因此它只能包含一条表达式&#…...

2024年数据、自动化与智能计算国际学术会议(ICDAIC 2024)
全称:2024年数据、自动化与智能计算国际学术会议(ICDAIC 2024) 会议网址:http://www.icdaic.com 会议地点: 厦门 投稿邮箱:icdaicsub-conf.com投稿标题:ArticleTEL。投稿时请在邮件正文备注:学生投稿&#…...

cuda 学习笔记4
一 基本函数 在GPU上开辟空间,无论定义的数据是float还是int ,还是****gpu_int,分配空间的函数都是下面固定的形式 (void**)& 1.函数定义,global void 是配套使用的,是在GPU上定义,也就是GPU上执行,CPU上调用的函数…...

ZSWatch 开源项目介绍
前言 因为时不时逛 GitHub 会发现一些比较不错的开源项目,突发奇想想做一个专题,专门记录开源项目,内容不限于组件、框架以及 DIY 作品,希望能坚持下去,与此同时,也会选取其中的开源项目做专题分析。希望这…...

Ansible-综合练习-生产案例
斌的招儿 网上教程大多都是官网模板化的教程和文档,这里小斌用自己实际生产环境使用的例子给大家做一个详解。涉及到一整套ansible的使用,对于roles的使用,也仅涉及到tasks和files目录,方便大家快速上手并规范化管理。 0.环境配置…...
lombok关于构造器的注解的坑【避坑】
文章目录 背景问题问题解决 背景 平时,我们不定义构造器时,会自动创建一个无参的构造器。 当我们提供了任意有参构造器后,将不再自动创建无参构造器。 问题 为了方便创建对象并同时赋值,使用了全参构造器的注解NoArgsConstruct…...

指针并不是用来存储数据的,而是用来存储数据在内存中地址(内存操作/函数指针/指针函数)
推荐:1、4、5号书籍 1. 基本概念 首先,让小明了解指针的基本概念: 指针的定义:指针是一个变量,它存储的是另一个变量的地址。指针的声明:例如,int *p表示一个指向整数的指针变量p。 2. 形象…...
iso21434认证的意义
ISO 21434认证对于汽车行业具有深远的意义,主要体现在以下几个方面: 确保汽车网络安全:ISO 21434认证旨在确保汽车在设计和制造过程中能够抵御潜在的网络威胁和攻击。通过遵循该标准,汽车制造商能够开发出具备可靠网络安全能力的…...

分页处理封装+分页查询题目列表
文章目录 1.sun-club-common封装分页1.com/sunxiansheng/subject/common/eneity/PageInfo.java2.com/sunxiansheng/subject/common/eneity/PageResult.java 2.sun-club-application-controller1.SubjectInfoDTO.java 继承PageInfo并新增字段2.SubjectController.java 3.sun-clu…...
每天一个项目管理概念之WBS
项目管理中的工作分解结构(Work Breakdown Structure,简称WBS)是规划和管理项目的核心工具之一,它通过将复杂的项目任务细分为更小、更易管理的部分来提高项目执行的效率与效果。WBS不仅有助于明确项目范围,还为时间管…...
linux安装mysql8并查看密码
1. **下载RPM包**: wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm 2. **安装RPM包**: sudo rpm -ivh mysql80-community-release-el7-3.noarch.rpm 3. **更新YUM缓存**: sudo yum makecache 4. **安装…...

[渗透测试] 任意文件读取漏洞
任意文件读取漏洞 概述 漏洞成因 存在读取文件的功能(Web应用开放了文件读取功能)读取文件的路径客户端可控(完全控制或者影响文件路径)没有对文件路径进行校验或者校验不严格导致被绕过输出文件内容 漏洞危害 下载服务器中的…...

sudo: /etc/init.d/ssh: command not found
在 WSL 中尝试启动 SSH 服务时遇到 sudo: /etc/init.d/ssh: command not found 错误 安装 OpenSSH 服务器 更新软件包列表 sudo apt update安装 OpenSSH 服务器 sudo apt install openssh-server启动 SSH 服务 在 WSL 2 上,服务管理与传统 Linux 系统有所不同。你可以手动启动…...

秋招倒计时?到底需要准备到什么程度?
秋招倒计时?需要准备到什么程度? 秋招,面向全国的毕业生,招聘的激烈程度可想而知!按照往年时间,秋招通常从八月初开始,九月黄金期,十月中后期。距今刚好差不多60天,时间其…...
6.26.4.1 基于交叉视角变换的未配准医学图像多视角分析
1. 介绍 许多医学成像任务使用来自多个视图或模式的数据,但很难有效地将这些数据结合起来。虽然多模态图像通常可以在神经网络中作为多个输入通道进行配准和处理,但来自不同视图的图像可能难以正确配准(例如,[2])。因此,大多数多视…...

62.指针和二维数组(2)
一.指针和二维数组 1.如a是一个二维数组,则数组中的第i行可以看作是一个一维数组,这个一维数组的数组名是a[i]。 2.a[i]代表二维数组中第i行的首个元素的地址,即a[i][0]的地址。 二.进一步思考 二维数组可以看作是数组的数组,本…...
学生表的DDL和DML
DDL -- 创建学生表 CREATE TABLE students (student_id INT PRIMARY KEY AUTO_INCREMENT,studentname VARCHAR(50),age INT,gender VARCHAR(10) );-- 创建课程表 CREATE TABLE courses (course_id INT PRIMARY KEY AUTO_INCREMENT,course_name VARCHAR(50) );-- 创建教师表 CR…...

测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...

让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

【深度学习新浪潮】什么是credit assignment problem?
Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...
WEB3全栈开发——面试专业技能点P4数据库
一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库,基于 mysql 库改进而来,具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点: 支持 Promise / async-await…...