保姆级指导0基础如何快速搭建“对话机器人”类ChatGPT

参考了CDSN上的文章,但发现不work, 不是这里有问题,就是那里有问题,查阅了大量的资料,做了无数次试验,终于整理出来了一个完整的教程,保可用,保真~~~~~如果各位遇到什么问题,也可以私信我

我把每个环节遇到的坑,都填平了,如果按我的操作,免去了大家查各种问题的富贵时间。祝你也能一次性来到人机对话的界面:

在这里插入图片描述

不多废话了,直接说,如何使用腾讯云上的机器,自建一个简单的类似ChatGPT、Kimi的会话机器人(没有他们的强大)

一、选择云服务器
1.申请云服务器

建议使用按量付费,按小时算还是非常便宜的。
硬件配置:
系统:ubuntu,20.04
系统盘:150G
GPU:12核44G,1 * NVIDIA A10(32G),硬盘150G,1*NVIDIA A10(24G)

在这里插入图片描述

软件版本:

由于A10的驱动,cuda均未安装,为了省事,直接申请了另一台,初始化完成后,打成镜像,然后再为A10重装就可以了,这样最省事。当然也可以手动安装。

使用的V100的镜像,初始化条件选择如下:
在这里插入图片描述

配置安全组,出全放开,入至少放开22和8760。
后付费要注意:要满足余额不低于要冻结金额。

2.GPU确认
登录服务器后,在安装V100的镜像时,可以看到显卡驱动在安装。(早了晚了可能都会错过这个页面)
在这里插入图片描述
等待显卡驱动安装完成后(会有一段时间),做下显卡确认
nvidia-smi
用于确认cuda版本。

安装cuda toolkit
sudo apt install nvidia-cuda-toolkit #时间有点久
如上面所述,然后制作为镜像,再导入到我们的A10当中。(重装系统)

二、安装并配置Python环境

1.安装python3.10
sudo apt-get update
sudo apt-get upgrade #需等待
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt -y install python3.10
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1

#验证安装成功,均返回Python 3.10.13
python3.10 --version
python3 --version

#升级pip
wget https://bootstrap.pypa.io/get-pip.py
python3.10 get-pip.py

2.安装Git和Git LFS软件
sudo apt install -y git git-lfs python3.10-distutils

3.安装模型所需要的Python包

在此之前,先把pip工具设置好。
看两处pip的版本是否一致:
第一种方式:pip show pip
第二种方式:python3.10 -m pip --version
若不一样,则:
然后修改两个文件:sudo vim /usr/bin/pip 以及sudo vim /usr/bin/pip3,将每个文件里面的两个版本号位置,修改为新的,最后再用pip show pip验证下。

#需等待,可能要不停地试,直到成功
pip install git+https://github.com/huggingface/transformers

#1.如果上面pip工具没设置好,可能会有如下报错:
在这里插入图片描述
回到上面处理吧,也可以参考:https://zhuanlan.zhihu.com/p/664770225
#2.如果报128,则看 https://zhuanlan.zhihu.com/p/648289974
下载到本地再上传 或者等网络环境好的时候下载。

继续执行:
pip install sentencepiece==0.1.97 -i https://pypi.tuna.tsinghua.edu.cn/simple

#需等待,非常漫长
pip install peft==0.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

4.验证:在PyTorch环境下验证GPU是否正常工作
python3.10
import torch
#返回值为true,表示正常工作
torch.cuda.is_available()
quit()
有可能会报cuda与python版本不匹配的问题:需要选择正确版本的CUDA和PyTorch安装(windows)
参考:https://zhuanlan.zhihu.com/p/672526561

三、下载与配置模型

1.下载Chinese-LLaMA-Alpaca模型。
git clone https://github.com/ymcui/Chinese-LLaMA-Alpaca.git
本地已下载:Chinese-LLaMA-Alpaca-main.zip

修改代码:Chinese-LLaMA-Alpaca/scripts/merge_llama_with_chinese_lora.py文件,dType类型 由float16全部换为bfloat16
全部修改为:
torch_dtype=torch.bfloat16

否则,在最终运行时,会报错:RuntimeError: probability tensor contains either inf, nan or element < 0
2.下载chinese-alpaca-lora-13b模型
git-lfs clone https://huggingface.co/ziqingyang/chinese-alpaca-lora-13b
大概率会失败,解决办法是把该文件夹下载到本地,然后再上传到服务上

//如果需要文件进行下载,可以联系我:lucky_shisheng
scp -r chinese-alpaca-lora-13b ubuntu@106.52.198.183:~
修改代码:chinese-alpaca-lora-13b中的adapter_config.json
去掉两行:
“enable_lora”: null,
“merge_weights”: false,

否则,在最终运行时,会报错:TypeError: init() got an unexpected keyword argument ‘enable_lora’

3.下载 llama-13b-hf模型
git-lfs clone https://huggingface.co/decapoda-research/llama-13b-hf
大概也会失败,解决办法是用wget直接下载,或者是像上面一样,下载到本地后,再上传上去。

//如果需要文件进行下载,可以联系我:lucky_shisheng
scp -r llama-13b-hf ubuntu@106.52.198.183:~

4.合并代码
合并代码,生成新模型
cd Chinese-LLaMA-Alpaca/
python3.10 scripts/merge_llama_with_chinese_lora.py --base_model ~/llama-13b-hf/ --lora_model ~/chinese-alpaca-lora-13b/ --output_type huggingface --output_dir ./llama_with_lora_hf

在这里,指定了base model和lora_model,输出路径为./llama_with_lora_hf
如果出现被kill,则是资源内存不足,需要换台机器来做。

合并完成后,可以确认一下转换完成后的文件内容,大概25G
ls -lh llama_with_lora_hf

四、部署WebUI

1.下载WebUI
#需要多试几次
cd~
git clone https://github.com/oobabooga/text-generation-webui.git
备份:text-generation-webui-main.zip

2.安装代码及依赖库
cd text-generation-webui/

#非常耗时
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
3.模型软链接生成到models下面
ln -s /home/ubuntu/Chinese-LLaMA-Alpaca/llama_with_lora_hf/ models/llama_with_lora_hf

五、最终对话界面生成
验证结果
python3.10 server.py --model llama_with_lora_hf --listen --chat --load-in-8bit

人机界面:
在这里插入图片描述
控制台:

在这里插入图片描述
若提示GPU内存不足,可以换个命令试一下:
python3.10 server.py --model llama_with_lora_hf --listen --chat --load-in-4bit

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

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

相关文章

Python中lambda函数使用方法

在Python中&#xff0c;lambda 关键字用于创建匿名函数&#xff08;无名函数&#xff09;&#xff0c;这些函数的特点是简洁、一次性使用&#xff0c;并且通常用于只需要一行表达式的简单场景。下面是lambda函数的基本结构和使用方法&#xff1a; 基本语法&#xff1a; lambd…

Python更改Word文档的页面大小

页面大小确定文档中每个页面的尺寸和布局。在某些情况下&#xff0c;您可能需要自定义页面大小以满足特定要求。在这种情况下&#xff0c;Python可以帮助您。通过利用Python&#xff0c;您可以自动化更改Word文档中页面大小的过程&#xff0c;节省时间和精力。本文将介绍如何使…

【PLC】PROFIBUS(二):总线协议DP、PA、FMS

1、总线访问协议 (FDL) 1.1、多主通信 多个主设备间&#xff0c;使用逻辑令牌环依次向从设备发送命令。 特征&#xff1a; 主站间使用逻辑令牌环、主从站间使用主从协议主站在一个限定时间内 (Token Hold Time) 对总线有控制权从站只是响应一个主站的请求它们对总线没有控制…

Java八股文(SpringCloud Alibaba)

Java八股文のSpringCloud Alibaba SpringCloud Alibaba SpringCloud Alibaba Spring Cloud Alibaba与Spring Cloud有什么区别&#xff1f; Spring Cloud Alibaba是Spring Cloud的衍生版本&#xff0c;它是由Alibaba开发和维护的&#xff0c;相比于Spring Cloud&#xff0c;它在…

OpenCV4.9在iOS中安装

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;使用CUDA 为Tegra构建OpenCV-CSDN博客 下一篇&#xff1a; 警告&#xff01; 本教程可以包含过时的信息。 所需软件包 CMake 2.8.8 或更高版本Xcode 4.2 或更高版本 从 G…

flask_Restful数据解析参数设置

add_argument 方法参数详解 add_argument方法可以指定这个字段的名字&#xff0c;这个字段的数据类 型等&#xff0c;验证错误提示信息等&#xff0c;具体如下&#xff1a; default&#xff1a;默认值&#xff0c;如果这个参数没有值&#xff0c;那么将使用这个参数 指定的默认…

短信系统开发注意事项|网页版短信后台

在开发短信系统时&#xff0c;有一些重要的注意事项需要考虑&#xff0c;以确保系统的稳定性、安全性和功能完整性。以下是一些开发短信系统时需要注意的事项&#xff1a; 合规性和法律要求&#xff1a;确保短信系统的开发符合当地法律法规和通信行业规定&#xff0c;包括用户隐…

【LVGL-文件系统移植】

LVGL-文件系统移植 ■ LVGL-文件系统移植■ 示例一&#xff1a;■ 示例二&#xff1a;视频实例■ 综合示例&#xff1a; ■ LVGL-文件系统移植 ■ 示例一&#xff1a; 在这里插入代码片■ 示例二&#xff1a;视频实例 在这里插入代码片■ 综合示例&#xff1a; /***********…

Rust基本类型

数值类型 整数类型 无符号整数只能取正数和0&#xff0c;有符号整数可以取正数负数和0。isize和usize类型取决于程序运行的计算机CPU类型&#xff0c;若CPU是32位的&#xff0c;则这两个类型是32位的&#xff0c;若CPU是64位的&#xff0c;则它们是64位的。rust整型 默认使用…

为响应国家号召,搜维尔科技开启虚拟仿真实验室设备升级改造服务

近日&#xff0c;国务院发布了关于《推动大规模设备更新和消费品以旧换新行动方案》&#xff0c;该通知的发布表现出国家对于科技创新事业的高度重视。各行各业都在积极响应国家号召&#xff0c;加快数字化转型和设备升级与更新步伐。搜维尔科技为响应国家号召&#xff0c;将开…

Redission 分布式锁原理分析

一、前言 我们先来说说分布式锁&#xff0c;为啥要有分布式锁呢? 像 JDK 提供的 synchronized、Lock 等实现锁不香吗&#xff1f;这是因为在单进程情况下&#xff0c;多个线程访问同一资源&#xff0c;可以使用 synchronized 和 Lock 实现&#xff1b;在多进程情况下&#xff…

单链表交叉分离,运用头插法,尾插法(算法库应用)

原文博客链接:单链表分离(头插法和尾插法的结合,理解指针变换)_3.对任务1或者2中创建的某一个单链表{a1,b1,a2,b2,...,an,bn},编写一个算法将-CSDN博客 函数实现: /************************************************** 函数名:separate_LinkList 功 能: 把一个链表,交叉新建…

电机控制杂谈——永磁同步电机中的永磁体谐波反电势

1.问题的引出 在我的谐波抑制专题中&#xff0c;讲了三种谐波抑制的策略。当时是通过增大逆变器死区来产生较大的谐波。但是在实际电机里面&#xff0c;我感觉死区的影响基本上没有。。。课题组的驱动器中&#xff0c;逆变器的非线性其实基本可以忽略不计了。 但是&#xff0…

langchin-chatchat部分开发笔记(持续更新)

大模型相关目录 大模型&#xff0c;包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步&#xff0c;扬帆起航。 大模型应用向开发路径及一点个人思考大模型应用开发实用开源项目汇总大模型问答项目…

SpringBoot中处理校验逻辑的两种方式:Hibernate Validator+全局异常处理

最近正在开发一个校园管理系统&#xff0c;需要对请求参数进行校验&#xff0c;比如说非空啊、长度限制啊等等&#xff0c;可选的解决方案有两种&#xff1a; 一种是用 Hibernate Validator 来处理一种是用全局异常来处理 两种方式&#xff0c;我们一一来实践体验一下。 一、…

AXI4-Stream Interconnect IP核(1)——原理

一、概述 AXI4-Stream Interconnect 是复杂片上系统&#xff08;SoC&#xff09;和现场可编程门阵列&#xff08;FPGA&#xff09;应用设计中的关键组件&#xff0c;它负责在系统内部不同模块之间路由数据流。AXI4-Stream协议是ARM引入的AMBA&#xff08;高级微控制器总线架构&…

插入排序和希尔排序:

插入排序 1. 算法思想&#xff1a; 由数组下标为1 开始的数值作为判断依据&#xff0c;与之前的数据从后往前比较定义tmp 暂存判断的数值&#xff0c;若前面的数据大于tmp&#xff0c;则将前面的数据向后移动 : arr[j1]arr[j]若对比的数据比tmp 大&#xff0c;则往后移&#…

JavaIO流与字节输出流OutputStream

1 概述 1.1 什么是IO流 IO流是存储和读取数据的解决方案&#xff0c;用于读写文件中的数据&#xff08;包括本地文件、网络等&#xff09; IO流的参照是程序或内存&#xff0c;即使程序在读&#xff0c;程序在写。 1.2 IO的分类 根据流的方向分为&#xff1a;输入流和输出流…

C++STL学习之unordered_map与unordered_set(底层Hash)

前言&#xff1a;我们前面已经学习论map和set&#xff0c;现在又冒出来一个unordered_map和unordered_set&#xff0c;这两个有啥差别吗&#xff1f;前面我们已经说过&#xff0c;map和set的底层是红黑树&#xff0c;那unordered_map和unordered_set的底层是什么呢&#xff1f;…

esp32CAM环境搭建(arduino+MicroPython+thonny+固件)

arduino ide 开发工具 arduino版本&#xff1a;1.8.19 arduino ide 中文设置&#xff1a;​ file >> preferences >> ​ arduino IDE 获取 ESP32 开发环境&#xff1a;打开 Arduino IDE &#xff0c;找到 文件>首选项 ,将 ESP32 的配置链接填入附加开发板管理网…