【书生2.5】XTuner 微调个人小助手认知

news2024/9/21 0:42:48

XTuner 微调个人小助手认知

【Intern Studio的gpu不足。本实验使用自有服务器】

1 环境安装

# 创建虚拟环境
conda create -n xtuner python=3.10 -y

# 激活虚拟环境(注意:后续的所有操作都需要在这个虚拟环境中进行)
conda activate xtuner

# 安装一些必要的库
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia -y
# 安装其他依赖
pip install transformers==4.39.3
pip install streamlit==1.36.0

#安装 XTuner
# 创建一个目录,用来存放源代码
mkdir -p /root/InternLM/code

cd /root/InternLM/code

git clone -b v0.1.21  https://github.com/InternLM/XTuner /root/InternLM/code/XTuner

# 进入到源码目录
cd /root/InternLM/code/XTuner
conda activate xtuner0121

# 执行安装
pip install -e '.[deepspeed]'

# 我这里是早前的环境,可以直接进行升级
pip install xtuner --upgrade # 目前是0.1.23

在这里插入图片描述
在这里插入图片描述

2 材料准备

  • 项目根目录
cd /project/server/xtuner # 这是项目根目录

ln -s /project/models/model_dir/Shanghai_AI_Laboratory/internlm2-chat-1_8b Shanghai_AI_Laboratory/internlm2-chat-1_8b
  • 微调数据
mkdir -p datas
touch datas/assistant.json
# 通过脚本生成微调数据
touch xtuner_generate_assistant.py
#xtuner_generate_assistant.py
import json

# 设置用户的名字
name = '同志'
# 设置需要重复添加的数据次数
n = 8000

# 初始化数据
data = [
    {"conversation": [{"input": "请介绍一下你自己", "output": "我是{}的小助手,内在是上海AI实验室书生·浦语的1.8B大模型哦".format(name)}]},
    {"conversation": [{"input": "你在实战营做什么", "output": "我在这里帮助{}完成XTuner微调个人小助手的任务".format(name)}]}
]

# 通过循环,将初始化的对话数据重复添加到data列表中
for i in range(n):
    data.append(data[0])
    data.append(data[1])

# 将data列表中的数据写入到'datas/assistant.json'文件中
with open('datas/assistant.json', 'w', encoding='utf-8') as f:
    # 使用json.dump方法将数据以JSON格式写入文件
    # ensure_ascii=False 确保中文字符正常显示
    # indent=4 使得文件内容格式化,便于阅读
    json.dump(data, f, ensure_ascii=False, indent=4)
  • 微调的配置文件
xtuner copy-cfg internlm2_chat_1_8b_qlora_alpaca_e3 .

# 修改配置文件;必须修改的3个地方:
模型路径
数据路径
模型加载方式

在这里插入图片描述

3 启动微调

xtuner train ./internlm2_chat_1_8b_qlora_alpaca_e3_copy.py

在训练完后,可以看到

work_dirs/internlm2_chat_1_8b_qlora_alpaca_e3_copy

4 模型格式转化(LoRA 模型文件)

# 先获取最后保存的一个pth文件
pth_file=`ls -t ./work_dirs/internlm2_chat_1_8b_qlora_alpaca_e3_copy/*.pth | head -n 1`
export MKL_SERVICE_FORCE_INTEL=1
export MKL_THREADING_LAYER=GNU
xtuner convert pth_to_hf ./internlm2_chat_1_8b_qlora_alpaca_e3_copy.py ${pth_file} ./hf

在这里插入图片描述

5 模型合并

export MKL_SERVICE_FORCE_INTEL=1
export MKL_THREADING_LAYER=GNU
xtuner convert merge /project/serve/xtuner/Shanghai_AI_Laboratory/internlm2-chat-1_8b ./hf ./merged --max-shard-size 2GB

在这里插入图片描述

6 验证

微调前

vi xtuner_streamlit_demo.py
# xtuner_streamlit_demo.py :https://github.com/InternLM/Tutorial/blob/camp3/tools/xtuner_streamlit_demo.py
streamlit run /project/serve/xtuner/xtuner_streamlit_demo.py

在这里插入图片描述

微调后

# 修改xtuner_streamlit_demo.py 中的model路径
# model_name_or_path = "/project/serve/xtuner/merged"
streamlit run /project/serve/xtuner/xtuner_streamlit_demo.py

在这里插入图片描述

bug处理

internlm2.py Boolean value of Tensor with more than one value is ambiguous

可能原因: xtuner版本不匹配

升级xtuner:pip install xtuner --upgrade

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

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

相关文章

同样128个内核,AMD霄龙9755性能翻倍:Zen 5架构下的性能飞跃

近日,AMD在服务器处理器领域再次展示了其强大的技术实力,随着AMD EPYC“Turin”处理器发布日期的临近,其基准测试结果也开始浮出水面。硬件爱好者博主9550pro近期分享了AMD 128核EPYC 9755“Turin”处理器在7zip压缩/解压缩基准测试中的跑分数…

深圳MES系统在电子制造业中的应用体现

深圳是中国电子制造业的重要基地,许多电子制造企业在深圳地区都在应用MES系统来优化生产管理、提高生产效率和产品质量。深圳MES系统在电子制造业中的应用主要体现在以下几个方面: 生产计划管理:电子制造企业通常面临订单量大、产品种类多的情…

【知识图谱】4、LLM大模型结合neo4j图数据库实现AI问答的功能

昨天写了一篇文章,使用fastapi直接操作neo4j图数据库插入数据的例子, 本文实现LLM大模型结合neo4j图数据库实现AI问答功能。 废话不多说,先上代码 import gradio as gr from fastapi import FastAPI, HTTPException, Request from pydantic…

分享使用智狐联创AI助手生成的一个食品选择器网页

先看效果: 使用的是智狐超强模型,只有一个html网页,点击开始会有动画的选择动画。效果很不错,你可以更改成任意类似场景使用,如:抽奖等等。感兴趣的可以去搜索官网试试,也有免费模型。https://w…

【云故事探索】NO.8:揭秘餐饮行业龙头 SaaS 厂商神州商龙的全栈可观测实践

云布道师 天津市神州商龙科技股份有限公司成立于1998年,是一家专为餐饮行业提供数字化整体解决方案及咨询业务的高新技术企业。秉承着“产品是第一生产力”的发展理念,神州商龙凭借过硬的产品与服务质量,为呷哺呷哺、大董、新荣记、刘一手、巴…

需方软件供应链安全保障要求及开源场景对照自评表(下)

国标《信息安全技术 软件供应链安全要求》确立了软件供应链安全目标,规定了软件供应链安全风险管理要求和供需双方的组织管理和供应活动管理安全要求。 开源软件供应链作为软件供应链的一种特殊形式,该国标亦适用于指导开源软件供应链中的供需双方开展组…

完美解决LBP2900打印机安装驱动提示无法识别USB及连接错误等问题(附Win11全新安装支持及卸载方案)

目录 前言驱动获取方法简易全新安装方法安装完成后的验证方法常见驱动卸载方法 前言 LBP2900打印机虽然属于经典老旧款,但依旧好用不过时。老早之前也分享过心相关的解决方案,请戳:👉旧版解决方案。但因年代久远还diss部分系统不通…

ssm“最多跑一次”微信小程序论文源码调试讲解

2系统相关技术 2.1 Java语言简介 Java是由SUN公司推出,该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称,也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备了显著的优势和广阔的前景&…

HarmonyOS开发实战( Beta5版)应用TSJS高性能编程工具最佳实践

概述 本文参考业界标准,并结合应用TS&JS部分的性能优化实践经验,从应用编程指南、高性能编程实践、性能优化调试工具等维度,为应用开发者提供参考指导,助力开发者开发出高性能的应用。 本文主要提供TS&JS高性能编程实践…

什么是短视频矩阵?一个人能做好短视频矩阵营销吗?

很多人认为做短视频矩阵就是多账号、多发视频就可以了,但其实做短视频矩阵,并不仅仅是更多账号更多视频那么简单,它的核心在于搭建一个全方位的内容传播方式。这种方式包括三个方面:账号矩阵、平台矩阵和内容矩阵。 首先是账号矩阵…

TikTok运营:IP地址如何影响TikTok的内容运营?

TikTok作为外贸人宣传推广的重要平台,其运营成效与产品的实际转化率息息相关。然而,在TikTok的运营过程中,一个看似微不足道的元素—IP地址,却扮演着至关重要的角色。本文将深入探讨TikTok运营中IP地址的重要性,揭示其…

炫700头猪!所有长久的关系,都是讲条件的——早读(逆天打工人爬取热门微信文章解读)

A股呀A股你好狠呀 引言Python 代码第一篇 洞见 所有长久的关系,都是讲条件的第二篇 华为小黑子?结尾 (这哥们是来炫他家的700头猪的吧,等我有钱了,包圆咯) 引言 周末工作一天 休息一天 周六上班 那天晚上…

8Manage PM:掌握高效项目进度跟踪的关键策略

在负责管理众多项目的同时,管理人员最不希望遭遇因项目进度滞后而产生额外负担。 项目可能会因资源分配不当、范围蔓延以及其他意外中断等因素而遭受延误,有时这种延误甚至可能是长期的。 因此,掌握项目进度跟踪的方法相当重要。在整个项目…

Unity(2022.3.41LTS) - UI详细介绍-InputField(输入字段)

目录 零.简介 一、基本功能与用途 二、组件介绍 三、使用方法 四、优化和注意事项 零.简介 在 Unity 中,输入字段(Input Field)是一个非常实用的用户界面组件,以下是更详细的介绍,包括组件方面的深入分析&#x…

深入理解MySQL慢查询优化(2) -- SQL的执行流程

要优化一条SQL语句,要先理解SQL操作的执行流程 1. 不同SQL操作的执行流程 1.1 order by order by用于排序,如果用于排序的列上没有索引,就需要把整张表加载进内存进行排序,非常耗时。如果有索引,因为B树存储的数据本…

计算机毕业设计选题推荐-高校一卡通系统-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

史记——我与历史的缘妙

究天人之际,通古今之变,成一家之言。 注解:这句话出自司马迁《史记》之《报任安书》。意思是通过“史实”现象揭示本质,探究自然现象和人类社会之间的相依相对关系。通晓从古到今的社会的各种发展演变,进而寻找历代王朝兴衰成败之道理。通过…

【Unity编辑器扩展】SpriteAltas资源一键转换为TMP_SpriteAsset或Sprite图集

【Unity编辑器扩展】艺术字/自定义图片字体/TextMeshPro艺术字生成工具_unity 艺术字-CSDN博客 博文工具源码见GF_X自动化游戏开发框架:GitHub - sunsvip/GF_X: Unity GameFramework HybridCLR,Includes several automated editor extension tools, an …

vue 批量导出pdf 压缩包 zip

vue 批量导出pdf 压缩包 zip 使用插件 html2canvas jspdf jszip (百度ai搜出来的是zip-js 这个没法安装) file-saver 思路: 1.使用 html2canvasjspdf 将页面转图片转pdf(这个怎么转的可以网上搜下很多) 2.利用jszipfil…

10个精选ArcGIS图源分享第4辑

数据是GIS的血液。 我们在《10个精选ArcGIS图源分享第3辑》一文中为你分享了10个ArcGIS图源,现在又增加了10个新的图源作为第4辑分享给大家。 并提供了能直接在ArcMap和ArcGIS Pro打开的文件,如果你需要这些ArcGIS图源,请在文末查看该数据的…