【大模型】7 天 AI 大模型学习

news2025/1/8 7:48:18

今天终于来到大模型学习的实战课了(虽然前面跳了2天的课),今天我们会一起学习 Llama 模型的运行、部署、微调 ~

一、Llama 介绍

Llama 模型官网:官网
Llama 论文:论文
Llama 代码:代码
理念:The open-source AI models you can fine-tune, distill and deploy anywhere.

LLaMA 各版本的时间线如下:

  1. LLaMA 1 (初版)

    • 发布日期:2023年2月
    • 特点:LLaMA 1 系列包含了多个不同规模的模型(7B、13B、30B、65B),强调高效训练和开源策略,目标是为研究人员提供一个灵活、高效的语言模型基础。
  2. LLaMA 2

    • 发布日期:2023年7月
    • 特点:LLaMA 2 引入了更大的模型规模(7B、13B、70B)并在性能、推理任务和道德性、安全性上进行了优化。继续维持开源策略,并广泛应用于文本生成、翻译等任务。
  3. LLaMA 3

    • 发布日期:2024年7月23日:
    • 尺寸
      Llama 3.1 8B:轻量级模型,适合资源有限的应用场景。
      Llama 3.1 70B:中等规模模型,提供了更强的能力。
      Llama 3.1 405B:这是当时最大规模的开源模型,拥有4050亿个参数,与GPT-4和Claude 3.5等闭源模型的竞争能力相当,并且在某些方面表现优异。

二、如何运行 Llama 3.1 8B

这里我们选择使用魔塔服务器环境进行我们的实验 。大家也可以去白嫖一下魔塔的免费实例。

魔塔首页:https://modelscope.cn

在这里插入图片描述

一、下载模型并测试

  1. 在模型库中搜索并找到 LLM-Research/Meta-Llama-3.1-8B-Instruct
    模型地址:LLM-Research/Meta-Llama-3.1-8B-Instruct
  2. 启动GPU环境实例,运行下图代码,下载并运行测试模型。

在这里插入图片描述

在运行微调命令的过程中,我发现我白嫖 24G 显存的 A10 带不动 Meta-Llama-3.1-8B-Instruct 这个模型的微调,所以我就换了一个小一点的 Llama 模型 (Llama-3.2-1B-Instruct)。 大家根据自己设备的能力而定。

二、使用 ms-swift 框架进行 Lora 微调

ms-swift 是魔搭社区提供的大模型与多模态大模型微调部署框架,现已支持450+大模型与150+多模态大模型的训练(预训练、微调、人类对齐)、推理、评测、量化与部署。

项目地址:https://github.com/modelscope/ms-swift/blob/main/README_CN.md

使用步骤:
(在 ms-swift 的文档里已经写明了详细的步骤,这是只是根据我的实际简要介绍一下。)

  1. 安装 pip install ms-swift -U
  2. 微调脚本,根据自己的需要进行修改
# 设置可见的GPU设备编号,这里只使用第0个GPU设备
CUDA_VISIBLE_DEVICES=0 \

# 指定使用的程序为swift,并且是sft(Supervised fine-tuning的缩写)
swift sft \

    # 模型名称和路径,这里是Qwen/Qwen2.5-7B-Instruct模型 (换为自己机器上的实际路径)
    --model Qwen/Qwen2.5-7B-Instruct \

    # 训练类型,这里是LoRA,一种低秩适配方法,用于高效微调
    --train_type lora \

    # 数据集列表,每个数据集后面跟着的是样本数量限制(例如:500条)- 可以直接使用 魔塔 社区的数据集,不需要下载到本机
    --dataset 'AI-ModelScope/alpaca-gpt4-data-zh#500' \
              'AI-ModelScope/alpaca-gpt4-data-en#500' \
              'swift/self-cognition#500' \

    # PyTorch张量的数据类型,这里使用bfloat16(脑浮点16位),有助于加速计算并减少内存占用
    --torch_dtype bfloat16 \

    # 训练的轮数(epochs),这里设置为1轮
    --num_train_epochs 1 \

    # 每个设备上的训练批量大小,设置为1
    --per_device_train_batch_size 1 \

    # 每个设备上的评估批量大小,也设置为1
    --per_device_eval_batch_size 1 \

    # 学习率,设置为1e-4
    --learning_rate 1e-4 \

    # LoRA的秩(rank),决定了额外参数的数量,设置为8
    --lora_rank 8 \

    # LoRA的alpha值,影响LoRA权重的缩放,设置为32
    --lora_alpha 32 \

    # 目标模块,这里设置为all-linear,表示对所有线性层应用LoRA
    --target_modules all-linear \

    # 梯度累积步数,设置为16,用于在更新模型参数前累积多个小批量梯度
    --gradient_accumulation_steps 16 \

    # 每多少步进行一次评估,设置为每50步
    --eval_steps 50 \

    # 每多少步保存一次模型检查点,同样设置为每50步
    --save_steps 50 \

    # 保留的最大检查点数量,设置为5个
    --save_total_limit 5 \

    # 每多少步记录一次日志,设置为每5步
    --logging_steps 5 \

    # 输入序列的最大长度,设置为2048个token
    --max_length 2048 \

    # 输出目录,用于保存模型、日志等文件
    --output_dir output \

    # 系统提示信息,定义了助手的行为模式
    --system 'You are a helpful assistant.' \

    # 学习率预热的比例,设置为0.05
    --warmup_ratio 0.05 \

    # 数据加载器的工作线程数,设置为4个
    --dataloader_num_workers 4 \

    # 模型作者的名字
    --model_author swift \

    # 模型的名称
    --model_name swift-robot
  1. 在终端运行微调脚本,等待运行完成
    在这里插入图片描述
  2. 合并模型
# merge 模型
CUDA_VISIBLE_DEVICES=0 swift export \
  --ckpt_dir /mnt/workspace/.cache/modelscope/hub/LLM-Research/output/v4-20250105-205301/checkpoint-205 \
  --merge_lora true

在这里插入图片描述

三、部署 merge 后模型测试

CUDA_VISIBLE_DEVICES=0 swift infer --ckpt_dir /mnt/workspace/.cache/modelscope/hub/LLM-Research/output/v4-20250105-205301/checkpoint-205-merged --infer_backend pt --max_model_len 4096 --gpu_memory_utilization 0.3

测试模型输出结果 ——

在这里插入图片描述

总结

本文中,我们简单介绍了一下 Llama 模型,并尝试使用 ms-swift 框架使用古文数据集进行了 lora 微调,下次,让我们一起学习如何对 fine-tune 完的模型进行量化 ~

最后,我是正在学 AI 的晚晴,期待和大家一起进步 ~

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

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

相关文章

小程序学习08—— 系统参数获取和navBar组件样式动态设置

一 系统信息的概念 uni-app提供了异步(uni.getSystemInfo)和同步(uni.getSystemInfoSync)的2个API获取系统信息。 success 返回参数说明: 参数分类说明statusBarHeight手机状态栏的高度system操作系统名称及版本。。。 二 自定义navbar 2.1 获取系统参数 代码展示…

STM32的LED点亮教程:使用HAL库与Proteus仿真

学习目标:掌握使用STM32 HAL库点亮LED灯,并通过Proteus进行仿真验证! 建立HAL库标准工程 1.新建工程文件夹 新建工程文件夹建议路径尽量为中文。建立文件夹的目的为了更好分类去管理项目工程中需要的各类工程文件。 首先需要在某个位置建立工…

密码学原理技术-第十一章-Hash Functions

文章目录 总结Why we need hash functionsDigital Signature with a Hash FunctionBasic Protocol for Digital Signatures with a Hash FunctionPrincipal input–output behavior of hash functions Security propertiesThe three security requirements of hash functionsWh…

【AI大模型系列】AI Agent与LangChain框架介绍(七)

目录 一、什么是AI Agent 二、什么是LangChain 三、LangChain的重要模块 3.1 Model I/O(模块输入输出) 3.2 Retrieval(检索) 3.3 Chains(链式调用) 3.4 Agents 3.5 Memory(记忆&#xff…

RabbitMQ 架构介绍:深入理解与应用

RabbitMQ 是一个开源的消息代理(Message Broker)软件,它实现了高级消息队列协议(AMQP),并提供了可靠的消息传递机制。RabbitMQ 广泛应用于分布式系统中,用于解耦系统组件、异步处理任务和实现消…

数据结构9.3 - 文件基础(C++)

目录 1 打开文件字符读写关闭文件 上图源自&#xff1a;https://blog.csdn.net/LG1259156776/article/details/47035583 1 打开文件 法 1法 2ofstream file(path);ofstream file;file.open(path); #include<bits/stdc.h> using namespace std;int main() {char path[]…

【C++】B2101 计算矩阵边缘元素之和

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目背景与描述题目描述输入格式输出格式输入输出样例说明与提示 &#x1f4af;分析与解决方案解法一&#xff1a;我的做法代码实现解题思路优点与局限性 解法二&#xff1…

【软考网工笔记】计算机基础理论与安全——计算机硬件知识

计算机分级存储体系 计算机分级存储体系目前最常用的是三级存储体系。 CPU——CaChe&#xff08;高速缓存&#xff09;——主存——辅存 其中 Cache 是用于解决存取速度不够快&#xff0c;辅存是用于解决存储容量不够大&#xff0c;二者结合可在容量和速度实现提升的情况下尽可…

回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测

回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测 目录 回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 一、极限学习机&#xff08;ELM&#xff09; 极限学习机是一种单层前馈神经网络&#xff0c;具有训练速…

【MATLAB】【Simulink仿真】向模型中添加自定义子系统

一、子系统的创建 1、启动Simulink&#xff0c;选择【新建】——【空白子系统】——【创建子系统】 2、选择【浏览组件库】&#xff0c;创建使能子系统。 3、保存至当前工作目录。 二、建立模型仿真 1、启动Simulink&#xff0c;选择【新建】——【空白子系统】——【创建子系…

国产编辑器EverEdit - 使用技巧:变量重命名的一种简单替代方法

1 使用技巧&#xff1a;变量重命名的一种简单替代方法 1.1 应用场景 写过代码的都知道&#xff0c;经常添加功能的时候&#xff0c;是把别的地方的代码拷贝过来&#xff0c;改吧改吧&#xff0c;就能用了&#xff0c;改的过程中&#xff0c;就涉及到一个变量名的问题&#xff…

手持PDA终端,提升零售门店管理效率

随着科技的不断进步和零售行业的持续发展&#xff0c;手持PDA终端的应用将会越来越广泛。它将不断融合更多先进的技术和功能&#xff0c;为零售门店管理带来更加便捷、高效、智能的解决方案。 手持PDA终端是集成了数据处理、条码扫描、无线通信等多种功能于一体的便携式设备‌…

机器学习之逻辑回归算法、数据标准化处理及数据预测和数据的分类结果报告

逻辑回归算法、数据标准化处理及数据预测和数据的分类结果报告 目录 逻辑回归算法、数据标准化处理及数据预测和数据的分类结果报告1 逻辑回归算法1.1 概念理解1.2 算法导入1.3 算法优缺点 2 LogisticRegression理解2.1查看参数定义2.2 参数理解2.3 方法2.4基本格式 3 数据标准…

ICLR2017 | Ens | 深入研究可迁移的对抗样本和黑盒攻击

Delving Into Transferable Adversarial Examples And Black-Box Attacks 摘要-Abstract引言-Introduction对抗深度学习和可迁移性-Adversarial Deep Learning And Transferability对抗深度学习问题生成对抗样本的方法评估方法 非目标性对抗样本-Non-Targeted Adversarial Exam…

在IDEA中如何用git拉取远程某一分支的代码

想要在idea中拉取远程某一分支的代码&#xff0c;我们可以在idea中使用git命令 1.选择idea的Terminal窗口 2.使用git -v 命令查看一下git的版本&#xff0c;顺便测试一下能否使用git命令&#xff08;不能使用的话需要在idea中进行相关配置&#xff09; 3.使用 git fetch命令更新…

【博主推荐】 Microi吾码开源低代码平台,快速建站,提高开发效率

&#x1f36c;引言 &#x1f36c;什么是低代码平台&#xff1f; 低代码平台&#xff08;Low-Code Platform&#xff09;是一种使开发人员和业务用户可以通过图形化界面和少量的编程来创建应用程序的开发工具。与传统的编程方式相比&#xff0c;低代码平台大大简化了开发过程&a…

基于51单片机(STC32G12K128)和8X8彩色点阵屏(WS2812B驱动)的小游戏《贪吃蛇》

目录 系列文章目录前言一、效果展示二、原理分析三、各模块代码1、定时器02、矩阵按键模块3、8X8彩色点阵屏 四、主函数总结 系列文章目录 前言 《贪吃蛇》&#xff0c;一款经典的、怀旧的小游戏&#xff0c;单片机入门必写程序。 以《贪吃蛇》为载体&#xff0c;熟悉各种屏幕…

【开源】创建自动签到系统—QD框架

1. 介绍 QD是一个 基于 HAR 编辑器和 Tornado 服务端的 HTTP 定时任务自动执行 Web 框架。 主要通过抓包获取到HAR来制作任务模板&#xff0c;从而实现异步响应和发起HTTP请求 2. 需要环境 2.1 硬件需求 CPU&#xff1a;至少1核 内存&#xff1a;推荐 ≥ 1G 硬盘&#xff1a;推…

【区块链】零知识证明基础概念详解

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 零知识证明基础概念详解引言1. 零知识证明的定义与特性1.1 基本定义1.2 三个核心…

豆包ai 生成动态tree 增、删、改以及上移下移 html+jquery

[豆包ai 生成动态tree 增、删、改以及上移下移 htmljquery) 人工Ai 编程 推荐一Kimi https://kimi.moonshot.cn/ 推荐二 豆包https://www.doubao.com/ 实现效果图 html 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF…