Llama 3 超级课堂 -笔记

课程文档: https://github.com/SmartFlowAI/Llama3-Tutorial

课程视频:https://space.bilibili.com/3546636263360696/channel/series

1  环境配置

1.1 创建虚拟环境,名为:llama3

conda create -n llama3 python=3.10

1.2  下载、安装 pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1

conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia

 

1.3  通过软连接获取 Meta-Llama-3-8B-Instruct模型

ln -s /root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct ~/model/Meta-Llama-3-8B-Instruct

1.4  获取Xtuner微调工具

cd ~
git clone -b v0.1.18 https://github.com/InternLM/XTuner
cd XTuner
pip install -e .

 2   Llama 3 Web Demo 部署

3  XTuner 完成小助手认知微调 

3.1 自我认知训练数据集准备

cd ~/Llama3-Tutorial
python tools/gdata.py 

以上脚本在生成了 ~/Llama3-Tutorial/data/personal_assistant.json 数据文件格式如下所示: 

训练模型

xtuner train configs/assistant/llama3_8b_instruct_qlora_assistant.py --work-dir /root/llama3_pth

Adapter PTH 转 HF 格式
xtuner convert pth_to_hf /root/llama3_pth/llama3_8b_instruct_qlora_assistant.py \/root/llama3_pth/iter_500.pth \/root/llama3_hf_adapter

 模型合并

export MKL_SERVICE_FORCE_INTEL=1
xtuner convert merge /root/model/Meta-Llama-3-8B-Instruct \/root/llama3_hf_adapter\/root/llama3_hf_merged

模型推理

streamlit run ~/Llama3-Tutorial/tools/internstudio_web_demo.py \/root/llama3_hf_merged

 

4 Llama 3 图片理解能力微调 

获取 Llama3 权重、Visual Encoder 权重、 Image Projector 权重

由上图报错,deepspeed未安装,所以通过 pip install deepspeed。以及也要需要安装 mpi4py

使用pip install mpi4py时,报如下错误出错,解决方法,见:https://blog.csdn.net/weixin_51762856/article/details/134247764 

 由于显存有限,无法进行模型训练了

 5  Llama 3 高效部署实践

安装lmdeploy最新版

 直接使用lmdeploy进行推理,显存占有:36G左右

 推理结果:

 把--cache-max-entry-count参数设置为0.5 ,显存占有:28G左右

 把--cache-max-entry-count参数设置为0.01,显存占16G左右

 使用W4A16量化

lmdeploy lite auto_awq \/root/model/Meta-Llama-3-8B-Instruct \--calib-dataset 'ptb' \--calib-samples 128 \--calib-seqlen 1024 \--w-bits 4 \--w-group-size 128 \--work-dir /root/model/Meta-Llama-3-8B-Instruct_4bit

使用Chat功能运行W4A16量化后的模型。 

 启动API服务器

lmdeploy serve api_server \/root/model/Meta-Llama-3-8B-Instruct \--model-format hf \--quant-policy 0 \--server-name 0.0.0.0 \--server-port 23333 \--tp 1

 本地需要ssh转发

 命令行客户端连接API服务器

网页客户端连接API服务器

pip install gradio==3.50.2
lmdeploy serve gradio http://localhost:23333 \--server-name 0.0.0.0 \--server-port 6006

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

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

相关文章

第十六篇:数据库性能优化:从基础到高级的全面指南

数据库性能优化:从基础到高级的全面指南 1. 引言 在数字化的浪潮中,数据库作为信息系统的核心组件,其性能的优劣直接关系到企业的运营效率和市场竞争力。数据库性能优化不仅是一项技术挑战,更是一项战略任务。它要求我们深入理解…

2024深圳杯数学建模C题完整思路+配套解题代码+半成品参考论文持续更新

所有资料持续更新,最晚我们将于5.9号更新参考论文。 【无水印word】2024深圳杯A题成品论文23页mtlab(python)双版本代码https://www.jdmm.cc/file/27105652024深圳杯数学建模C题完整思路配套解题代码半成品参考论文持续更新https://www.jdmm.cc/file/2710545 深圳杯…

Kali Linux 安装 + 获取 root 权限 + 远程访问!保姆级教程!

kali是linux其中一个发行版,基于Debian,前身是BackTrack(简称BT系统)。kali系统内置大量渗透测试软件,可以说是巨大的渗透系统,涵盖了多个领域,如无线网络、数字取证、服务器、密码、系统漏洞等…

数据驱动测试在接口测试和网站测试中的应用

什么是数据驱动测试 据驱动测试是一种测试方法,其中测试数据和测试逻辑是分开的,测试数据被存储在外部源中(如Excel表格、JSON文件、数据库等),测试逻辑则独立于测试数据。在测试过程中,测试数据被读取并传…

2024年程序员最应该关注的几件事?

对于程序员而言,技术和行业趋势的演变是持续关注的焦点。以下是几件2024年程序员应该关注的事情: 持续学习新技术:技术领域的快速变化要求程序员不断更新自己的技能集,包括编程语言、框架、工具和最佳实践。 人工智能与机器学习&…

Linux线程(四) 生产者消费者模型

目录 一、什么是生产者消费者模型 基本概念 优点以及应用场景 二、 基于阻塞队列的生产者消费者模型 三、POSIX信号量 四、基于环形队列的生产消费模型 一、什么是生产者消费者模型 Linux下的生产者消费者模型是一种经典的多线程或多进程编程设计模式,它用于解…

【LangChain系列 15】语言模型——LLMs(一)

原文地址:【LangChain系列 15】语言模型——LLMs(一) 本文速读: 异步API 自定义LLM Fake LLM HumanInput LLM 本文将介绍LLMs在LangChain中的一些用法,帮助我们更好地了解LLM模块。 01 异步API LangChain通过异步库实现了对异步的支持&a…

大模型应用的最佳实践Chains, SequentialChain使用示例

各种chain的介绍 串联式编排调用链:SequentialChain 流水线 胶水代码逻辑处理具备编排逻辑 串行 one by one的调用上一个chain的输出 作为 下一个chain的输入 超长文本的转换 Transform Chain pdf文件处理提供了套壳的能力 将python处理字符串的能力 套用进来 完成数据的格式化…

datagridview合并单元格

private void dataGridView5_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { DataGridView dataGridView this.dataGridView5; // 假设你的DataGridView有至少三行三列 if (e.RowIndex 2 && e.ColumnIndex 2) //合并第三行最后两…

java sql中 大于 小于 大于等于 小于等于 代替符号

在写java时sql会经常会忘记大于小于号的表示方法导致无法运行&#xff0c;总结一下 第一种方法&#xff1a; < &#xff1a;< < &#xff1a; < &#xff1a;> &#xff1a; > sql如下&#xff1a; create_at > #{startTime} and create_at < #{end…

MySQL innodb_buffer_pool_size 相关常用语句

对于MySQL速度慢的问题&#xff0c;除了优化 SQL 以外&#xff0c;应该必须优先想到的即使 MySQL 数据库的 innodb_buffer_pool_size 配置问题。 一般来说&#xff0c;innodb_buffer_pool_size 的默认大小都是很小的&#xff0c;尤其是 win 下其默认大小更是只有离谱的 8M。Li…

centos7中如何全局搜索一下nginx的配置文件?

在CentOS 7中搜索Nginx的配置文件&#xff0c;你可以使用一些常用的命令行工具&#xff0c;比如find、grep等。这些工具可以帮助你在文件系统中查找文件&#xff0c;也可以用来查找Docker容器内部的文件&#xff0c;只要你知道如何访问容器的文件系统。 1. 搜索系统中的Nginx配…

fuel无人机自主探索代码解读2——sdf_map.cpp【占据栅格地图、膨胀占据栅格地图、ESDF】

一、概述 sdf_map.cpp负责map_ros.cpp内部主体函数的具体实现&#xff0c;主要功能包括&#xff1a; 融合输入的深度或点云图生成全局占据栅格地图根据launch参数生成全局膨胀占据栅格地图基于膨胀占据栅格地图采用欧式距离传输生成局部的ESDF地图采用三线性插值的方式得到某…

深度学习面试题整理

文章目录 1. TensorFlow是什么&#xff1f;2. 计算图3. pytorch tensorflow4. 节点与张量类型5. tensorboard6. tensflow三个工作组件7. 大多数 TensorFlow 算法的常用步骤是什么&#xff1f;8. 处理TensorFlow中过拟合的方法9. 为什么出现过拟合10. 交叉验证11. 学习率12. 特征…

Python SMTP发送邮件时如何设置邮件地址?

Python SMTP发送邮件如何添加附件&#xff1f;如何使用SMTP发信&#xff1f; Python则通过其内置的smtplib模块和email模块为我们提供了实现这一功能的工具。在发送邮件的过程中&#xff0c;正确设置邮件地址是至关重要的&#xff0c;AokSend就来详细探讨一下如何在Python SMT…

韵搜坊 -- 前端整合Axios(联调后端)

文章目录 安装配置发送请求 官网&#xff1a;https://www.axios-http.cn/docs/intro 安装 npm install axios配置 坐标&#xff1a;plugins/myAxios.ts import axios from "axios";const instance axios.create({baseURL: "http://localhost:8101/api"…

Python专题:十三、日期和时间(1)

Python 日期和时间处理模块 模块就是别人写好的代码&#xff0c;通过将模块引入到代码里&#xff0c;使用已经实现好的功能 math模块&#xff0c;import模块名 time模块 时间戳&#xff1a;从公元1970年1月1日0点0分0秒起&#xff0c;到现在总共经历过的秒杀

Page对象的学习

在ASP.NET中&#xff0c;Page是一个核心对象&#xff0c;它代表了一个ASP.NET Web Forms页面。每一个.aspx文件在运行时都会被编译成一个Page类的实例&#xff0c;这个实例承载了页面的所有功能&#xff0c;包括处理用户输入、与数据库交互、渲染HTML输出等。 在ASP.NET Web F…

第 8 章 机器人底盘Arduino端编码器驱动(自学二刷笔记)

重要参考&#xff1a; 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 8.4.3 底盘实现_02Arduino端编码器驱动 测速是整个PID闭环控制中的必须环节&#xff0c;我们必须修改代码适配…

设计模式之策略模式(一)

背景: 下单时有很多情况,有的是用户下单,有的是卡密下单,有的是下游下单,有的是需要唤起支付,有的不需要支付,这样就需要写很多下单接口,下面使用策略模式优化这种情况 代码结构 com.example.order ├── controller │ └── OrderController.java ├── service │ …