当前位置: 首页 > article >正文

如何使用腾讯云GPU云服务器自建一个简单的类似ChatGPT、Kimi的会话机器人

如何使用腾讯云GPU云服务器自建一个简单的类似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确认

登录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)

三、下载与配置模型

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.kler.cn/a/390884.html

相关文章:

  • Linux设置Nginx开机启动
  • mysql5.7安装SSL报错解决(2),总结
  • go reflect 反射
  • go T 泛型
  • 【在Linux世界中追寻伟大的One Piece】多路转接epoll
  • go语言 分布式一致
  • OpenCV与AI深度学习 | 基于YoloV11自定义数据集实现车辆事故检测(有源码,建议收藏!)
  • vue中如何关闭eslint检测?
  • 【子串分值——贡献法】
  • 软考:去中心化的部署有什么特点
  • vue2面试题6|[2024-11-11]
  • 25浙江省考-专项刷题(数字推理)-错题本
  • 从0开始学docker (每日更新 24-11-10)
  • Qt 项目架构设计
  • 11/12Linux实验2
  • 【快捷入门笔记】mysql基本操作大全-SQL数据库
  • webpack loader全解析,从入门到精通(10)
  • NVR设备ONVIF接入平台EasyCVR私有化部署视频平台如何安装欧拉OpenEuler 20.3 MySQL
  • 微服务容器化部署实践(FontConfiguration.getVersion)
  • kafka面试题part-3
  • 发包人一直恶意拖延审计,施工人如何破局?
  • 信息安全工程师(82)操作系统安全概述
  • MVVM前端开发模型,怎么快速定位问题
  • 库打包工具 rollup
  • Chromium127编译指南 Linux篇 - 编译前环境搭建(一)
  • 基于深度卷积二元分解网络的齿轮和轴承故障特征提取方法