基于LLaMA完成第一个微调

ops/2024/11/26 23:41:29/

一、LLaMA Factory 简介

img

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调。

# LLaMA Factory 访问地址
https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md

二、LLaMA Factory 搭建

1、下载工程代码

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

2、创建Conda 环境

# 本机需要提前安装号conda 或者miniconda的环境
# 官方是以python=3.10为基础搭建
conda create -n llama_factory python=3.10
conda activate llama_factory

3、安装LLaMA

# 安装LLaMA-Factory 所需要的第三方基础库(requirements.txt包含的库)
# 安装评估指标所需要的库,包含nltk, jieba, rouge-chinese
# 安装LLaMA-Factory本身,然后在系统中生成一个命令 llamafactory-cli
cd LLaMA-Factory
pip install -e '.[torch,metrics]'

备注,当使用清华源安装时候,默认会安装成torch的cpu版本。本文提供另外的两种方式进行搭建。

# 方案一:
# 在清华源镜像里找到对应的安装包
# https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/
pytorch-2.2.2-py3.10_cuda11.8_cudnn8_0.tar.bz2
torchaudio-2.2.2-py310_cu118.tar.bz2
torchvision-0.18.0-py310_cu118.tar.bz2# 安装
conda install --offline {your_path}.tar.bz2# 方案二:
# 根据自己nvidia-smi的cuda版本去pytorch官网找对应的下载指令
# https://pytorch.org/get-started/previous-versions/
conda install pytorch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 pytorch-cuda=11.8 -c pytorch -c nvidia# 安装完pytorch后,需要匹配Pillow 版本
pip uninstall Pillow
pip install Pillow==11.0.0# 把环境搭建好以后,最后在执行
cd LLaMA-Factory
pip install -e '.[torch,metrics]'

4、环境验证
pytorch 的环境验证

import torch
torch.cuda.current_device()
torch.cuda.get_device_name(0)
torch.__version__

LLaMA 的环境验证

llamafactory-cli train -h

三、模型推理
1、下载本地模型

# 推荐使用huggingface、modelscope 下载模型
# 以modelscope 为例(不推荐git)
from modelscope import snapshot_download
model_dir = snapshot_download('LLM-Research/Meta-Llama-3-8B-Instruct')

2、使用LLaMA自带的ChatBot推理页面, 帮助做模型效果的测试

# 方法一:
# CUDA_VISIBLE_DEVICES=0 是指定程序使用第0张卡,可以不加
CUDA_VISIBLE_DEVICES=0 llamafactory-cli webchat 
--model_name_or_path ./model/Meta-Llama-3-8B-Instruct  
--template llama3# 方法二:
# 修改examples/inference/llama3.yaml 文件model_name_or_path
llamafactory-cli webchat examples/inference/llama3.yaml# 访问地址
http://localhost:7860/

3、使用API的方式启动模型

# api的方式启动,方便Fastgpt 等应用的接入
# 端口号在api.py中设置
python src/api.py --model_name_or_path model/Meta-Llama-3-8B-Instruct --template llama3# 服务的方式启动
nohup bash -c "python src/api.py --model_name_or_path model/Meta-Llama-3-8B-Instruct --template llama3" > logs/output_llama3.log 2>&1 &

四、模型微调

1、修改数据集样本

# 以官方提供的identity.json 数据集为例
sed -i 's/{{name}}/PonyBot/g'  data/identity.json 
sed -i 's/{{author}}/LLaMA Factory/g'  data/identity.json

2、基于LoRA的sft指令微调

CUDA_VISIBLE_DEVICES=0 llamafactory-cli train \--stage sft \--do_train \--model_name_or_path ./model/Meta-Llama-3-8B-Instruct \--dataset alpaca_zh_demo,identity \--dataset_dir ./data \--template llama3 \--finetuning_type lora \--output_dir ./saves/LLaMA3-8B/lora/sft \--overwrite_cache \--overwrite_output_dir \--cutoff_len 1024 \--preprocessing_num_workers 16 \--per_device_train_batch_size 2 \--per_device_eval_batch_size 1 \--gradient_accumulation_steps 8 \--lr_scheduler_type cosine \--logging_steps 50 \--warmup_steps 20 \--save_steps 100 \--eval_steps 50 \--evaluation_strategy steps \--load_best_model_at_end \--learning_rate 5e-5 \--num_train_epochs 5.0 \--max_samples 1000 \--val_size 0.1 \--plot_loss \--fp16

3、通过ChatBot推理页面验证效果

llamafactory-cli webchat  --model_name_or_path ./model/Meta-Llama-3-8B-Instruct  
--adapter_name_or_path ./saves/LLaMA3-8B/lora/sft  
--template llama3  
--finetuning_type lora

如何学习AI大模型

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。


http://www.ppmy.cn/ops/136941.html

相关文章

《用Python画蔡徐坤:艺术与编程的结合》

简介 大家好!今天带来一篇有趣的Python编程项目,用代码画出知名偶像蔡徐坤的形象。这个项目使用了Python的turtle库,通过简单的几何图形和精心设计的代码来展示艺术与编程的结合。 以下是完整的代码和效果介绍,快来试试看吧&…

Android Configuration相关

log打印 在日志中经常可以看到打印 WindowManager: Override config changes20005df8 {0.0 ?mcc?mnc ?localeList ?layoutDir sw294dp w294dp h654dp 587dpi nrml long port ?uimode ?night -touch -keyb/v/h -nav/h winConfig{ mBoundsRect(0, 0 - 1080, 2400) mAppBou…

redis的List底层数据结构 分别什么时候使用双向链表(Doubly Linked List)和压缩列表(ZipList)

在Redis中,List数据类型的底层数据结构可以在压缩列表(ZipList)和双向链表(Doubly Linked List)之间选择。以下是它们各自使用的条件: 1. **使用ZipList(压缩列表)的条件**&#xf…

web组态软件

1、强大的画面显示web组态功能 2、良好的开放性。 开放性是指组态软件能与多种通信协议互联,支持多种硬件设备,向上能与管理层通信,实现上位机和下位机的双向通信。 3、丰富的功能模块。 web组态提供丰富的控制功能库,满足用户的测…

Python操作neo4j库py2neo使用(一)

Python操作neo4j库py2neo使用(一) 安装(只用于测试) docker-compose .yml 文件 version: 3.8 services:neo4j:image: neo4j:5.6.0-enterprise #商业版镜像hostname: neo4jcontainer_name: neo4jports:- "7474:7474"-…

【linux013】文件操作命令篇 - less 命令

文章目录 less 命令1、基本用法2、常见选项3、交互式键盘命令4、举例5、注意事项 less 命令 less 是 Linux 中强大的文件分页查看命令,比 more 更灵活且功能更强大。less 支持双向滚动、搜索、显示大文件等功能,适用于查看文件内容或管道输出的大量文本…

嵌入式AI之rknn yolov5初探

本文主要记录在RK3588上跑通RKNUP的rknn_yolov5_demo的过程,并且对rknn_yolov5_demo的代码进行修改,实现在显示器上同步播放rknn_yolov5_demo视频流检测结果。 首先,是RKNUP SDK的编译,参考官方SDK中的README.md文档,下载好对应的sdk编译工具链,我这边使用的是debian系统…

【Python】构建事件驱动架构:用Python实现实时应用的高效系统

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 事件驱动架构(Event-Driven Architecture,EDA)是一种基于事件流动进行系统设计的模式,广泛应用于游戏开发、实时监控和分布式系统中。它通过解耦事件的生产者和消费者,提升系统的可扩展性和灵活性。本文章从…