6.llamafactory项目介绍与安装部署

6.llamafactory项目介绍与安装部署

一、学术资源加速

  • 服务说明:AutoDL提供学术资源加速服务,主要解决GitHub和HuggingFace访问速度慢的问题,但仅限学术用途且不承诺稳定性
  • 加速地址:包含github.com、githubusercontent.com、githubassets.com、huggingface.co等域名
  • 终端配置:
  • 注意事项:
    • 建议不需要时关闭加速,可能影响正常网络
    • 关闭命令:

二、主流微调框架介绍

1. Transformer
  • 生态地位:Hugging Face核心库,NLP领域最广泛使用的基础框架
  • 技术特点:
    • 支持全参数微调
    • 兼容PEFT库扩展
  • 优势:
    • 生态系统最完善,社区活跃
    • 与PyTorch/TensorFlow无缝集成
    • 模型和教程资源丰富
  • 适用场景:中小规模模型实验、研究和开发,微调入门首选
2. PEFT
  • 技术定位:参数高效微调标准库
  • 核心方法:
    • LoRA
    • Prefix-tuning
    • AdaLoRA
    • Prompt Tuning
  • 突出优势:
    • 计算和存储成本极低
    • 与Transformers完美集成
    • 操作简单易用
  • 局限性:仅支持单卡微调,不适合分布式训练
  • 适用场景:资源受限环境(如单卡),需高效适配多任务的场景
3. LLaMA-Factory
  • 产品特色:低代码/无代码快速微调框架
  • 技术集成:
    • 多种微调方法(含LoRA等)
    • 集成优化技术
  • 用户体验:
    • 提供友好Web UI界面
    • 支持拖拽式参数配置
    • 无需深厚代码功底
  • 典型应用:
    • 快速原型验证
    • 非技术人员微调
    • 本课程主要教学框架
4. ModelScope
  • 平台定位:阿里"模型即服务"(MaaS)平台
  • 技术特点:
    • 多模态模型支持
    • 训练-评估-部署全流程
  • 特色优势:
    • 中文场景优化
    • 企业级生产环境支持
  • 适用场景:需要多模态模型和完整流水线的企业用户
5. MS-SWIFT
  • 规模支持:超大规模模型微调
  • 核心技术:
    • LoRA/QLoRA
    • 分布式训练
    • 量化技术
  • 模型覆盖:
    • 支持500+LLM
    • 200+多模态模型
  • 适用场景:需要微调超大规模模型或追求极致性能的生产部署
6. Unsloth
  • 技术突破:动态量化微调(2024年新技术)
  • 核心优化:
    • LoRA/QLoRA底层重构
    • 训练速度提升2倍
    • 显存占用大幅降低
  • 显著特点:
    • 量化微调几乎无损精度
    • 兼容Hugging Face生态
  • 当前局限:仅支持单卡微调
  • 适用场景:
    • 计算资源严格受限
    • 追求训练效率极限
    • 20B参数以下模型
7. 小结
  • 框架选择指南:
    • 入门实验:Transformers+PEFT组合
    • 快速实现:LLaMA-Factory
    • 企业多模态:ModelScope/MS-SWIFT
    • 资源受限:Unsloth
  • 发展趋势:Unsloth若能支持分布式训练,可能成为未来主导框架
  • 课程选择:本课程以LLaMA-Factory作为主要教学框架

三、LLaMA-Factory项目介绍

  • 项目地址: https://github.com/hiyouga/LLaMA-Factory
  • 项目热度: 目前已有57.2k stars,287 watching和7k forks,从2023年开始人气持续快速增长
1. 支持的模型
  • 覆盖范围: 支持几乎所有主流大语言模型,包括:
    • Baichuan 2 (7B/13B)
    • BLOOM/BLOOMZ (560M-176B)
    • DeepSeek系列 (1.5B-671B)
    • Gemma系列 (2B-27B)
    • GLM系列 (9B-355B)
    • GPT系列 (0.1B-120B)
    • 最新支持的GPT-OSS (20B/120B)
  • 模板支持: 每个模型都有对应的对话模板(chat template)
2. 安装要求
  • 核心依赖:
    • Python: 3.9(最低)/3.10(推荐)
    • PyTorch: 2.0.0(最低)/2.6.0(推荐)
    • Transformers: 4.49.0(最低)/4.50.0(推荐)
  • 可选组件:
    • CUDA: 11.6(最低)/12.2(推荐)
    • Flash-attn: 2.5.6(最低)/2.7.2(推荐)
  • 环境适配: 部分功能需要特定架构的显卡支持,如V100显卡不支持某些功能
3. 硬件要求
  • 全精度训练:
    • 32位: 7B模型需要120GB显存
    • 16位(bf16): 7B模型需要60GB显存
  • 高效微调方法:
    • LoRA/Freeze: 7B模型仅需16GB显存
    • QLoRA 8-bit: 7B模型需10GB显存
    • QLoRA 4-bit: 7B模型仅需6GB显存
4. 安装
  • 先在autodl购买实例
    • 在autodl进入jupytelLab-终端
  • 下载
    • 输入
      • ls
      • cd autodl-tmp
      • git clone --depth 1 https://github.com/hiyouga/LlamaFactory.git
  • 进入:
  • 虚拟环境建议: 本地使用建议创建conda虚拟环境
  • conda create -n llamafactory python=3.10
  • 安装
  • 拓展模块安装
    • flashAttention库----加速
      • pip install flash-attn --no-build-isolation  #注意:V100不支持该库
    • bitsandbytes库--量化库
      • pip install bitsandbytes
    • deepspeed库---做分布式微调
      • pip install deepspeed==0.12.3
    • accelerate库--加速
      • pip install accelerate
pip install -e . pip install -r requirements/metrics.txt
cd LlamaFactory

四、llama factory项目文件介绍

  • /data文件夹
    • 存放数据集的文件夹,可以用开源数据集,也可以自己写数据集
  • /examples文件夹
    • 提供了训练(deepspeed,lora,qlora,fsdp)、模型合并、推理等示例代码,可以该参数直接用
  • /scripts文件夹
    • 存放微调、训练、模型合并、评估等脚本的文件夹
  • /docker文件夹
    • 各类显卡的docker部署
  • /evaluation文件夹
    • 评估模型性能数据集,脚本

五、启动llama

  • 在终端输入:GRADIO_SERVER_PORT=6006 llamafactory-cli webui
  • 打开powershell
  • 点击那个地址就可以进入

密码输入的时候是不显示的,直接输入完即可

六、预训练模型下载

1. 模型选择与下载准备
  • 目标模型: 本次微调使用的是通义千问3-4B-Base模型
  • 模型特点:
    • 是Qwen系列最新一代大型语言模型
    • 提供密集型和专家混合(MoE)两种架构
    • 预训练使用了119种语言的36万亿个标记
    • 语言覆盖范围是Qwen2.5的三倍
    • 包含编码、STEM、推理等丰富的高质量数据
2. 下载方法
  • 魔塔社区:https://www.modelscope.cn/models
    • 在终端新开一个窗口
    • pip install modelscope
    • cd
    • cd autodl-tmp #下载到数据盘
    • modelscope download --model Qwen/Qwen3.5-4B-Base --cache_dir ./

Read more

【数据结构与算法】汉诺塔问题(C++)

【数据结构与算法】汉诺塔问题(C++)

目录 一、汉诺塔问题基础定义 1. 问题描述 2. 核心规律 3. 问题分解思想(递归核心) 二、递归实现汉诺塔(简洁优雅,易理解) 1. 递归思路 2. 完整递归代码(带步骤打印 ) 三、非递归实现汉诺塔 非递归思路: 1. 非递归思路 2.代码实现: 四、写在最后 汉诺塔(Hanoi Tower)是经典的递归算法入门问题,源于古印度的数学传说,其核心是通过有限次移动,将一根柱子上的所有圆盘按 “小圆盘在上、大圆盘在下” 的规则移到另一根柱子,且移动过程中始终遵守 “一次仅移一个圆盘、大圆盘不能压小圆盘” 的规则。本文将从问题原理出发,详细讲解汉诺塔的递归实现(核心思路,简洁优雅)和非递归实现(基于栈模拟,深入理解递归本质),并提供完整可运行的

By Ne0inhk

小白初识C++逆向

CMakeLists.txt(Qt6 + Widgets)入门逆向最舒服的一条路就是先写一个你完全理解的程序,再用 IDA + x64dbg 去“拆自己”,学习成本最低、反馈最快。下面我将用一个自己写的Qt6登录/注册 Demo,后面再介绍怎么在 IDA 和 x64dbg 里一步步定位关键逻辑。 目标1:做一个 “可逆向练习”的登录/注册程序 功能设计: * 注册:用户名 + 密码 → 保存到本地(JSON 或 SQLite) * 登录:读本地数据 → 校验 * UI:两个页面(QStackedWidget):Login / Register * 校验函数:bool checkCredentials(user, pass) 1) 目录结构 创建文件夹 QtLoginLab/

By Ne0inhk
C++起始之路——string

C++起始之路——string

👇作者其它专栏 《数据结构与算法》《算法》《C++起始之路》 目录 1.为什么学习string类 2.标准库中的string类 3.string类的模拟实现 4.扩展 1.为什么学习string类 1.1C语言中的字符串 C语言中,字符串是以'\0'结尾的一些字符的集合,为方便操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,容易出现越界访问。 2.标准库中的string类 2.1string类 string类的文档介绍 使用string类时,必须包含#include<string>头文件与using namespace std;  2.2auto与范围for auto关键字 ●在早期C/C++中auto的含义是:

By Ne0inhk
C++ vector容器底层深度剖析与模拟实现

C++ vector容器底层深度剖析与模拟实现

🔥近津薪荼:个人主页 🎬个人专栏:《c语言基础知识详解》《c++基础知识详解》 ✨每个优秀的人, 都有一段沉默的时光, ❄️那段时光是付出了很多努力, 却得不到结果的日子,我们把它叫做扎根, ⭐️祝您也祝我早日破土而出,巨木参天。 简介:本文主要以手打代码的方式来实现vector的各接口功能,带大家深入了解vector的底层原理~ 目录 1 模板的使用说明 2 vector深度剖析及模拟实现 2.1 vector的成员变量 2.2 构造函数 2.2.1 指定大小和初始值的构造函数 2.2.2 迭代器范围构造函数 2.2.3 拷贝构造函数(现代写法) 2.3 赋值运算符重载 2.4 容量相关操作 2.4.1 reserve

By Ne0inhk