Llama3 中文通用 Agent 微调模型来啦!(附手把手微调实战教程)

news2024/11/17 17:50:29

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。

基于大家的讨论和大模型实践,我们写了:

《大模型面试宝典》(2024版) 发布!
《大模型实战宝典》(2024版) 发布!


Llama3模型在4月18日公布后,国内开发者对Llama3模型进行了很多训练和适配,除了中文纯文本模型外,多模态版本也陆续在发布中。

考虑到国内用户对Agent场景的需求,社区LLM&AIGC模型微调推理框架SWIFT基于Llama3-8b-instruct原始版本训练了通用中文模型,并保留且适配了中文Agent能力,这是开源社区中率先完整适配中文环境的通用Agent Llama3模型,后续会有更完整的评测报告产出。

使用方式

推荐用户直接使用swift进行推理或部署:

# 安装依赖
pip install ms-swift -U
# 推理
swift infer --model_type llama3-8b-instruct --model_id_or_path swift/Llama3-Chinese-8B-Instruct-Agent-v1
# 部署
swift deploy --model_type llama3-8b-instruct --model_id_or_path swift/Llama3-Chinese-8B-Instruct-Agent-v1

下面介绍如何使用SWIFT框架训练Llama3中文Agent模型

环境准备

我们使用框架SWIFT进行模型训练,开发者如果希望训练Llama3中文版本可以参考下面的安装方式:

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
# 安装ms-swift
git clone https://github.com/modelscope/swift.git
cd swift
pip install -e '.[llm]'
# 环境对齐 (通常不需要运行. 如果你运行错误, 可以跑下面的代码, 仓库使用最新环境测试)
pip install -r requirements/framework.txt  -U
pip install -r requirements/llm.txt  -U

技术交流&资料

技术要学会分享、交流,不建议闭门造车。一个人可以走的很快、一堆人可以走的更远。

成立了大模型面试和技术交流群,相关资料、技术交流&答疑,均可加我们的交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式①、微信搜索公众号:机器学习社区,后台回复:加群
方式②、添加微信号:mlc2040,备注:来自CSDN + 技术交流

通俗易懂讲解大模型系列

  • 重磅消息!《大模型面试宝典》(2024版) 正式发布!

  • 重磅消息!《大模型实战宝典》(2024版) 正式发布!

  • 做大模型也有1年多了,聊聊这段时间的感悟!

  • 用通俗易懂的方式讲解:大模型算法工程师最全面试题汇总

  • 用通俗易懂的方式讲解:不要再苦苦寻觅了!AI 大模型面试指南(含答案)的最全总结来了!

  • 用通俗易懂的方式讲解:我的大模型岗位面试总结:共24家,9个offer

  • 用通俗易懂的方式讲解:大模型 RAG 在 LangChain 中的应用实战

  • 用通俗易懂的方式讲解:ChatGPT 开放的多模态的DALL-E 3功能,好玩到停不下来!

  • 用通俗易懂的方式讲解:基于扩散模型(Diffusion),文生图 AnyText 的效果太棒了

  • 用通俗易懂的方式讲解:在 CPU 服务器上部署 ChatGLM3-6B 模型

  • 用通俗易懂的方式讲解:ChatGLM3-6B 部署指南

  • 用通俗易懂的方式讲解:使用 LangChain 封装自定义的 LLM,太棒了

  • 用通俗易懂的方式讲解:基于 Langchain 和 ChatChat 部署本地知识库问答系统

  • 用通俗易懂的方式讲解:Llama2 部署讲解及试用方式

  • 用通俗易懂的方式讲解:一份保姆级的 Stable Diffusion 部署教程,开启你的炼丹之路

  • 用通俗易懂的方式讲解:LlamaIndex 官方发布高清大图,纵览高级 RAG技术

  • 用通俗易懂的方式讲解:为什么大模型 Advanced RAG 方法对于AI的未来至关重要?

  • 用通俗易懂的方式讲解:基于 Langchain 框架,利用 MongoDB 矢量搜索实现大模型 RAG 高级检索方法

准备

在这里插入图片描述

训练使用8卡进行,环境准备完成后,只需要如下命令即可开启训练:

NPROC_PER_NODE=8 \
swift sft \
  --model_type llama3-8b-instruct \
  --dataset ms-agent-for-agentfabric-default alpaca-en ms-bench ms-agent-for-agentfabric-addition coig-cqia-ruozhiba coig-cqia-zhihu coig-cqia-exam coig-cqia-chinese-traditional coig-cqia-logi-qa coig-cqia-segmentfault coig-cqia-wiki \
  --batch_size 2 \
  --max_length 2048 \
  --use_loss_scale true \
  --gradient_accumulation_steps 16 \
  --learning_rate 5e-5 \
  --use_flash_attn true \
  --eval_steps 500 \
  --save_steps 500 \
  --train_dataset_sample -1 \
  --dataset_test_ratio 0.1 \
  --val_dataset_sample 10000 \
  --num_train_epochs 2 \
  --check_dataset_strategy none \
  --gradient_checkpointing true \
  --weight_decay 0.01 \
  --warmup_ratio 0.03 \
  --save_total_limit 2 \
  --logging_steps 10 \
  --sft_type lora \
  --lora_target_modules ALL \
  --lora_rank 8 \
  --lora_alpha 32

为了提高ReACT格式的准确率,我们将部分loss字段的权重提高以保留中文训练中的agent能力表现。

推理效果

该模型具备良好的中文问答能力,示例如下:

通用问答:

图片

图片

逻辑题:

图片

图片

图片

对联:

图片

藏头诗:

图片

古文翻译:

图片

代码能力:

图片

评测

我们使用swift的eval命令对训练模型的前后进行了通用能力评测,结果如下:

在这里插入图片描述

英文GSM8K能力下降了8个点左右,经过消融实验我们发现去掉alpaca-en语料会导致GSM8K下降至少十个点以上。

我们在服务部署后,可以在AgentFabric中校验其接口调用效果,以天气查询为例,可以看到:

图片

图片

模型可以按照system要求对查询进行补全。

文生图

图片

图片解释

图片

图片

图片

图片

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

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

相关文章

文本语音互相转换系统设计

title: 文本语音互相转换系统设计 date: 2024/4/24 21:26:15 updated: 2024/4/24 21:26:15 tags: 需求分析模块化设计性能优化系统安全智能化跨平台区块链 第一部分:导论 第一章:背景与意义 文本语音互相转换系统的定义与作用 文本语音互相转换系统是…

js进行数据移除性能比较(splice,map)

当使用 splice() 方法处理大量数据时,确实会遇到性能问题,因为它涉及到移动数组中的元素,导致操作的时间复杂度为 O(n)。对于大量数据,频繁的插入和删除可能会导致性能下降。 1、设置数组数据为10000,使用splice移除数…

linux——yum工具详解

yum是linux中自动解决软件包依赖关系的管理器 同时,yum也是一个rpm软件 这里使用yum install nginx安装nginx

前缀和 求数列的子序列的K倍区间

(直接截图比复制文字要好多了) 不会做的时候我去看了之前做的关于这道题目的笔记, (Ak 1)% k 1 (Ak 1 Ak)% k 1 只要发现了同余数的情况就说明有一个区间满足了题目的要求。 这个方法的精妙之处就在于前缀和包括了…

窗函数的选择

不同的窗函数实质上时对矩形窗进行了不同程度的加权得到的不同类型的窗函数。 将模拟角频率转换为了数字角频率 矩形窗旁瓣过大,两个频率的峰值相差较大,因此无法识别,可以使用旁瓣非常小的窗函数来进行分辨,只是想要达到相同的分…

目标检测——小麦穗头数据集

一、重要性及意义 小麦穗头检测在农业领域具有重要意义,主要体现在以下几个方面: 首先,小麦穗头检测可以帮助农民和植物科学家准确评估作物的健康状况和成熟度。通过对小麦穗部的形态特征进行测量和分析,可以及时发现作物生长过…

简单工厂、工厂方法、抽象工厂对比

简单工厂、工厂方法和抽象工厂是三种常见的工厂设计模式,它们在软件设计中各有其独特的应用场景和优缺点。因为三种设计模式都属于工厂模式,在实际应用中可能存在误用的场景,这里对其做下对比,以便更好的理解这三种设计模式。 简…

第四百七十七回

文章目录 1. 知识回顾2. 使用方法2.1 源码分析2.2 常用属性 3. 示例代码4. 内容总结 我们在上一章回中介绍了"Get包简介"相关的内容,本章回中将介绍GetMaterialApp组件.闲话休提,让我们一起Talk Flutter吧。 1. 知识回顾 我们在上一章回中已经…

【HTML】页面引用Vue3和Element-Plus

在现代前端开发中,Vue 3 和 Element Plus 是非常受欢迎的技术。Vue 3 是一个用于构建用户界面的渐进式 JavaScript 框架,而 Element Plus 是一个基于 Vue 3 的组件库,提供了丰富的 UI 组件,帮助开发者快速构建高质量的前端应用。 …

【Java | 多线程】LockSupport 的使用和注意事项

了解一下 LockSupport LockSupport是一个类,位于java.util.concurrent.locks包中,提供了基本的线程同步机制。 LockSupport的主要作用是挂起和唤醒线程。它提供了两个主要的静态方法:park()和unpark()。 park():用于挂起当前线…

成都百洲文化传媒有限公司电商服务怎么样?

在当今数字化浪潮席卷全球的背景下,电商行业异军突起,成为连接消费者与品牌之间的重要桥梁。在这股变革之风中,成都百洲文化传媒有限公司以其专业的电商服务,成为行业的佼佼者,助力众多品牌踏上腾飞之路。 一、专业铸…

【Java 解析全国详细地址】Java 利用正则表达式完美解析全国省市区地址

这里写自定义目录标题 Java使用正则解析省市区/县 具体地址问题场景上demo运行结果 Java使用正则解析省市区/县 具体地址 问题场景 OCR识别营业执照 获取详细地址并拆分 上demo import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; import j…

前端开发攻略---封装calendar日历组件,实现日期多选。可根据您的需求任意调整,可玩性强。

1、演示 2、简介 1、该日历组件是纯手搓出来的,没依赖任何组件库,因此您可以随意又轻松的改变代码,以实现您的需求。 2、代码清爽干净,逻辑精妙,您可以好好品尝。 3、好戏开场。 3、代码(Vue3写法&#xff…

ROS下机器人系统仿真及部分SLAM建图

文章目录 一、 Launch文件使用二、 参考资料三、 遇到的问题四、 效果演示五、相关代码5.1 一些简介5.2 机器人模型5.2.1 机器人底盘5.2.2 摄像头5.2.3 雷达 5.3 惯性矩阵 六、代码传送门实验结果及分析 温馨提示:如果有幸看到这个文章,不要看里面的内容…

bugku-杂项-社工进阶收集

下载附件 得到图片 利用百度地图查找 这里得到地点名称大雁塔音乐喷泉 陕西省西安市,大雁塔北广场 打开高德地图 来到大雁塔北广场 因为在北广场,所以地铁站为大雁塔站 开始分析 坐七站到大雁塔站,即始发站为韦曲南站 因为始发站离她家800米&…

Vue3的监听属性watch和计算属性computed

监听属性watch 计算属性computed 一、监听属性watch watch 的第一个参数可以是不同形式的“数据源,watch 可以监听以下几种数据: 一个 ref (包括计算属性)、 一个响应式对象、 一个 getter 函数、 或多个数据源组成的数组 watch 的参数:监视的回调&…

如何用stata画出文献中常见的安慰剂检验图?如何解决

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

Twisted 与 Tornado 中的 WebSocket 连接问题及解决方案

1、问题背景 项目中我们需要通过 Tornado HTTP 处理程序建立WebSocket连接,该连接需要处理多个用户请求,并且将从外部服务器获取的数据存储到数据库中。我们尝试了以下实现: from twisted.internet import reactor from autobahn.websocket…

R可视化:ggplot2绘制双y轴图

介绍 ggplot2绘制双y轴图加载R包 knitr::opts_chunk$set(message = FALSE, warning = FALSE) library(tidyverse) library(readxl)# rm(list = ls()) options(stringsAsFactors = F) options(future.globals.maxSize = 10000 * 1024^2)Importing data 下载Underdetection of c…

【性能测试】ChaosTesting(混沌测试)ChaosBlade(混沌实验工具)(六)-servelt

7. servelt接口规范 7.0 创建servelt blade create servlet 7.0.1 介绍 Servlet 是 Java 的 web 的接口规范,Java web 服务器都遵循此规范实现。本场景主要模拟 Java Web 请求延迟、异常场景。 [blade create servlet delay](blade create servlet delay.md) 请…