【书生·浦语】大模型实战营——第四课作业

教程文档:https://github.com/InternLM/tutorial/blob/main/xtuner/self.md
在这里插入图片描述
在这里插入图片描述
基础作业需要构建数据集,微调模型,让其明白自己的弟位(OvO!)

微调环境准备

进入开发机后,先bash,再创建conda环境。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

微调数据准备

创建data目录用于存放用于训练的数据集。

mkdir -p /root/personal_assistant/data && cd /root/personal_assistant/data

在data目录下创建一个json文件personal_assistant.json作为本次微调所使用的数据集。json中内容可参考下方(复制粘贴n次做数据增广,数据量小无法有效微调,下面仅用于展示格式,下面也有生成脚本)

其中conversation表示一次对话的内容,input为输入,即用户会问的问题,output为输出,即想要模型回答的答案。

[{"conversation": [{"input": "请介绍一下你自己","output": "我是不要葱姜蒜大佬的小助手,内在是上海AI实验室书生·浦语的7B大模型哦"}]},{"conversation": [{"input": "请做一下自我介绍","output": "我是不要葱姜蒜大佬的小助手,内在是上海AI实验室书生·浦语的7B大模型哦"}]}
]

以下是一个python脚本,用于生成精神扰动(bushi)数据集。

import json# 输入你的名字
name = 'Shengshenlan'
# 重复次数
n = 10000data = [{"conversation": [{"input": "请做一下自我介绍","output": "我是{}的小助手,内在是上海AI实验室书生·浦语的7B大模型哦".format(name)}]}
]for i in range(n):data.append(data[0])with open('personal_assistant.json', 'w', encoding='utf-8') as f:json.dump(data, f, ensure_ascii=False, indent=4)

在data目录下新建一个generate_data.py文件,将以下代码复制进去,将name和conversation内容进行修改,然后运行该脚本即可生成数据集。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置准备

将微调模型复制到指定目录
在这里插入图片描述
拷贝一个配置文件到当前目录,过程有点漫长。
在这里插入图片描述
得到配置文件后,我们修改其中的一些路径与内容。
在这里插入图片描述
按照教程修改配置文件中的一些内容,尤其注意这个evaluation_inputs,需要跟你生成数据集的问题尽可能相似。
在这里插入图片描述

微调启动

xtuner train /root/personal_assistant/config/internlm_chat_7b_qlora_oasst1_e3_copy.py

训练过程
在这里插入图片描述
训练到后面,可以看到loss相当低,其实我们是在数据集上过拟合了。
在这里插入图片描述

微调后参数转换/合并

在这里插入图片描述
因为我这里复制了3w个数据,训练了一个epoch,所以pth那里要写epoch_1.pth
随后,键入以下命令进行参数的转换。

xtuner convert pth_to_hf $CONFIG_NAME_OR_PATH $PTH $SAVE_PATH

在这里插入图片描述
出现All Done,则表明参数已经转换成功了。
键入以下命令,进行模型的merge
在这里插入图片描述
出现如下图的All Done,则表明模型merge已经完成
在这里插入图片描述

网页DEMO

安装网页Demo所需依赖

pip install streamlit==1.24.0

下载InternLM代码
在这里插入图片描述
将/root/personal_assistant/code/InternLM/web_demo.py中的29和33行的模型路径改为/root/personal_assistant/config/work_dirs/hf_merge
在这里插入图片描述
文件保存后,进入对应环境,并使用以下命令来运行。

 streamlit run /root/personal_assistant/code/InternLM/web_demo.py --server.address 127.0.0.1 --server.port 6006

在这里插入图片描述
load model end后即可进行问答。

效果

微调前
在这里插入图片描述
微调后
在这里插入图片描述
后面的文字有删除线的原因:
网页显示应该是用markdown语法展示的。我句子里“噢”后面有个波浪号,能力后面有个波浪号,两个波浪号中间变成删除线了。

踩坑

坑点1:改的web_demo不是运行命令中对应的web_demo文件

教程(https://github.com/InternLM/tutorial/blob/main/xtuner/self.md)中修改web_demo时,修改的是root/code目录下的InternLM的web_demo,把这里面的文件参数路径改了。
在这里插入图片描述
然而,在后续streamlit启动时,运行的却是另一个目录里的web_demo文件。
在这里插入图片描述

所以,教程中改路径部分,目录应为/root/personal_assistant/code/InternLM/web_demo.py
或者把后面启动命令的personal_assistant给去掉。
总之就是保证你改的是那个文件,启动也得是那个文件

坑点2:模型回答时报出 StreamlitAPIException: Failed to load the provided avatar value as an image

仔细看报错,其实是读取不到图片。
在这里插入图片描述
但我看了一下目录,相对于web_demo.py来说,这个路径没有错呀?
此时,看vs code ports 6006端口的命令,我陷入了沉思。这里的doc/imgs/user.png是一种相对路径的写法,但是运行的时候,这个相对路径是相对谁的呢?是python?还是streamlit?还是web_demo.py?
在这里插入图片描述
所以,为了排除相对路径的困扰,将web_demo.py文件中的76行、77行的user_avator、robot_avator变量写成绝对路径,就可以顺利运行。如下所示:
在这里插入图片描述

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

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

相关文章

Vue模板的理解和使用

Vue模板 Vue.js 的模板是一种声明性的语法,用于将数据渲染进 DOM(文档对象模型)。它们使开发者能够以直观的方式声明式地描述用户界面应该如何根据应用程序数据的变化动态显示。 Vue模板的主要特点包括: 数据绑定: …

列表解析与快速排序

排序是在对文本、数值等数据进行操作时常用的功能,本文介绍两种常用的排序方式,借此学习列表解析,并巩固递归算法。 1 选择排序 说到排序,以数值为例,肯定涉及到值大小的对比,选择排序即通过依次在子集中…

蓝桥杯 python 第二题 数列排序

这里给出一种解法 """ # 错的 n int(input()) dp[int(i) for i in input().split(" ")] dp.sort() print(" ".join(str(i) for i in dp)) """#这个是对的 num int(input())l list(map(int, input().split()))l.sort()pr…

AI文本生图模型Stable Diffusion部署教程

本文基于CentOS8进行Stable Diffusion开源框架部署. 1. DNS配置(但是今天出现了偶尔无法下载问题) 为了加速Github访问,我在本机配置如下 (sd) [rootshenjian stable-diffusion-webui]# cat /etc/hosts 127.0.0.1 shenjian localhost localhost.localdomain localhost4 loca…

SpringCloud openFeign 之 获取被调用服务名

SpringCloud openFeign 之 获取被调用服务名 一. 概述 低版本 feign 只能获取到被调用方法的信息。 只有高版本 feign 才支持获取到被调用服务的信息。 二. 代码实现 package com.zxguan.springcloud2.template.user;import com.zxguan.springcloud2.template.user.config…

修改权限控制(chmod命令、chown命令)

1.chmod命令 功能:修改文件、文件夹权限(注意,只有文件、文件夹的所属用户或root用户可以修改) 语法:chmod [-R] 权限 参数 权限,要设置的权限,比如755,表示:rwxr-xr-x…

Crow:蓝图路由2 Blueprint::register_blueprint

Crow:蓝图路由1 CROW_BP_ROUTE-CSDN博客 介绍了蓝图路由主要的一个作用就是将路由划分成蓝图路由根目录,然后再在蓝图路由创建子路由。 蓝图路由其实还可以在其下注册新的子蓝图路由,从而实现子目录的继续划分: crow::Blueprint bp("bp_prefix", "cstat&q…

【WPF.NET开发】WPF中的XAML资源

本文内容 使用 XAML 中的资源静态和动态资源静态资源动态资源样式、DataTemplate 和隐式键 资源是可以在应用中的不同位置重复使用的对象。 资源的示例包括画笔和样式。 本概述介绍如何使用 Extensible Application Markup Language (XAML) 中的资源。 你还可以使用代码创建和…

考研经验总结——数学篇

文章目录 一、前言二、刷题情况三、学习方法 一、前言 我是考数一的,我想想,我是从10月中旬正式开始准备考研,期间的话,跟的机构,没看武忠祥、没看张宇,什么名师的课程都没看。全程网课都是看一个老师&…

【面试突击】生产部署面试实战

🌈🌈🌈🌈🌈🌈🌈🌈 欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术 的推送 发送 资料 可领取 深入理…

C程序训练:大数相乘与阶乘的计算

两个大数相乘,我们可以利用小学生列竖式做乘法的方法编写程序即可。例如,计算123*23,可以按以下步骤做: 1. answer 0; 2. temp123*3 369 3. answer answer temp 4. temp 123 * 20 2460 5. answer answer t…

如何从电脑找回/恢复误删除的照片

按 Shift Delete 以后会后悔吗?想要恢复已删除的照片吗?好吧,如果是这样的话,那么您来对地方了。在本文中,我们将讨论如何从 PC 中检索已删除的文件。 自从摄影的概念被曝光以来,人们就对它着迷。早期的照…

Markdown编辑器

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

Linux 挂载卸载 设备

如何挂载 Linux中挂载一个存储设备,你可以按照以下步骤进行: 首先,你需要找到你的设备在系统中的标识。你可以使用lsblk或fdisk命令来查看。例如,设备可能被标识为/dev/sdb1。 创建一个挂载点。这是一个目录,你将在…

Windows Server 2012 R2部署项目

JDK 下载JDK 1.直接官网下载:http://www.oracle.com/; 2.我用的是1.8,阿里云盘分享地址:https://www.aliyundrive.com/s/u4V9x1AHL2r 安装jdk 双击安装点击下一步如果不改变路径就一直下一步 安装完成直接点击关闭即可&#x…

GPT Store,是否会成为下一个App Store?

经历了一场风波后,原本计划推出的GPT Store终于成功上线。OpenAI在北京时间1月11日推出了GPT Store,被广泛视为类似于苹果的"App Store",为人工智能应用生态系统迈出了重要一步。然而,OpenAI要想将GPT Store打造成苹果般…

一、docker的安装与踩坑

目录 一、安装docker(centos7安装docker)1.安装环境前期准备2.参考官网安装前准备3.参考官网安装步骤开始安装docker4.运行首个容器 二、安装一些软件的踩坑1.启动docker踩坑2.安装mysql踩坑3.罕见问题 三、关于我的虚拟机 一、安装docker(ce…

【WPF.NET开发】WPF中的文档

本文内容 文档类型文档控件和文本布局文档打包XPS 文档 Windows Presentation Foundation (WPF) 提供丰富的文档功能,可创建旨在比前几代 Windows 更易于访问和读取的高保真内容文档。 除增强功能和质量外,WPF 还对文档显示、打包和安全性能提供集成服…

Rockchip | FIQ-Debugger调试工具

FIQ-Debugger fiq debugger是集成到内核中的一种系统调试手段。 FIQ在arm架构中相当于nmi中断,fiq debugger把串口注册成fiq中断,在串口fiq中断服务程序中集成了一些系统调试命令。 一般情况下串口是普通的console模式,在串口工具下键盘输入…

如何再造宇宙厂所有APP?

本文内容,纯属十年老架构师杜撰,切勿照着实操,可能会给你带来几十亿的流量,怕你的服务器扛不住。 1. 破音 前端用uniapp,花800买个短视频应用模板,后端用golang支持高并发, 数据库用图数据库加elastic se…