【AI】云服务器部署大模型+知识库问答

本地部署大模型+测试已有数据集

写在前面

第一步: 创建容器实例

10

  • 选择镜像: 社区镜像 --> chatchat-space/Langchain-Chatchat --> 选择下载最多的v0.2.10版本

6

  • 选择基础镜像也可以, 不过笔者之前多次尝试, 总是遇到大大小小的问题, 索性就选择环境比较完备的Langchain-chatchat

小扩展

  • 社区镜像, Langchain-chatchat下面有一个Akegarasu/lora-scripts/lora-train, 用于Stable Diffusion LoRA 训练, 下载量也很多
1
2
3
4
5
6
7
8
9
10
11
12
## 回答来自: ChatGPT

Stable Diffusion LoRA(Low-Rank Adaptation)是一种技术,主要用于微调大型图像生成模型,如Stable Diffusion。LoRA的目标是通过较少的计算资源和较小的数据集,快速、高效地调整模型的权重,使其能够生成特定风格或主题的图像。

具体来说,LoRA通过引入低秩矩阵来调整模型的部分权重,从而减少需要更新的参数量。这意味着,用户可以在不必重新训练整个模型的情况下,使用LoRA微调模型来适应某个特定的任务或数据集,例如生成特定风格的图片或处理某类视觉任务。

应用场景包括:

风格定制:用户可以用LoRA快速微调模型,生成符合特定艺术风格的图像。
特定主题生成:通过LoRA,模型可以更好地生成特定主题(如特定类型的物体、人物、景观等)相关的图片。
效率提升:相比从头训练模型,LoRA可以大大降低微调的计算成本和时间开销。
这使得LoRA特别适用于资源有限但需要灵活调整的场景,例如艺术创作、定制图像生成等。

第二步: 无卡模式开机

  • 平时环境配置+模型训练, 尽量用无卡模式
  • 下单后等一会,实例创建完成,自动开机
  • 但是开机默认开始扣费,所以等创建完实例马上关机
  • 关机需要一小会
  • 关机完成后,点击实例右边的[更多],选择无卡模式开机

8

  • 成功开机后, 点击JupterLab进入命令行环境

7

第二点五步: JupyterLab服务异常[修bug]

4

  • 可能遇到这种情况, 不过不用慌

  • 先打开帮助文档: AutoDL帮助文档

  • 解决方案: ssh登录

    • 打开本地终端, 复制登录指令粘贴
    • 出现....@ ...... password:的提示后再cv密码
    • 成功登录后, 终端出现如下界面:

14

  • 根据帮助文档, 在终端界面输入jupyter-lab , 报错:

    1
    2
    3
    4
    5
    # jupyter-lab
    Traceback (most recent call last):
    File "/root/miniconda3/bin/jupyter-lab", line 5, in <module>
    from jupyterlab.labapp import main
    ModuleNotFoundError: No module named 'jupyterlab'
  • 则对应文档提示出错原因: 安装某些依赖导致JupyterLab的依赖被动升级或降级,从而影响了JupyterLab的运行

  • 解决: pip install jupyterlab 再次安装后重启实例恢复

  • 笔者在这一步pip之后, 再点击JupyterLab , 就可以成功进入了

第三步: 把模型运行起来

13

1
2
3
4
5
cd /root

conda activate chatchat

bash startup.sh

cd /root 登录进去默认已经在根目录下了, 这一步可忽略

conda activate chatchat 激活名为 chatchat 的 Anaconda 环境, 需要的依赖都已经提前安装好了, 直接启动环境

bash startup.sh 运行脚本, 等待片刻即可启动

  • 启动脚本后, 等一阵子, 会闪过很多东西
  • 看到以下提示, 就稳了

9

11

1
2
3
4
5
6
7
## 辅助理解工具: 通义千问


URL: http: // ...... : ....
--> 表示应用通过Streamlit框架启动了一个Web服务, 监听在本地机器(此处指云服务器)的所有网络接口上, 并使用端口xxxx, 意味着可以通过浏览器访问此URL来使用Langchain应用
--> 当然因为这个服务器没有提供web服务, 所以启动成功了也没法直接从云服务器访问
--> 之前因为这个问题, 笔者一度很崩溃, 又尝试了Ollama, LLaMaFactory等, 以及换了其他云服务器, 但是从0到1搭建环境的繁琐又让笔者回到这个最接近成功的方法......

第四步: 将远程服务器上的服务代理到本地

note:

善用大模型, 把自己的思考+思路+尝试+命令行报错信息整理一下丢给模型, 往往会得到有效的解决方案

1
2
3
4
5
6
7
8
9
10
11
12
13
## 辅助工具: ChatGPT

使用SSH将实例中的端口代理到本地,具体步骤:
Step.1 在实例中启动您的服务(比如您的服务监听6006端口)

Step.2 在本地电脑的终端(cmd / powershell / terminal等)中执行代理命令:

ssh -CNg -L 6006:127.0.0.1:6006 root@123.125.240.150 -p 42151

其中root@123.125.240.150和42151分别是实例中SSH指令的访问地址与端口,请找到自己实例的ssh指令做相应替换
6006:127.0.0.1:6006是指代理实例内6006端口到本地的6006端口。

注意:执行完这条ssh命令,没有任何日志是正常的,只要没有要求重新输入密码或错误退出
  • 过程截图:

11

12

15

  • 代理成功之后, 本地访问127.0.0.1:6006, 成功进入langchainwebui界面

第五步: 上传知识文件+ 尝试问答

  • 上传指定类型的知识文件, 并选择添加该文件到知识库

17

16

  • 经过几次尝试, 发现源文件[√]和向量库[√]的文件才算有效的知识库文件

  • 即将测试的内容: 红高粱的内容提要是什么?

  • 无卡模式跑的有点慢, 所以此处为第一次测试结果(RTX3090 开机状态, 读者在创建时直接上4090)

2

  • 到此处初步测试算是完成了

第?步: 扩展部分

数据格式转换(从xlsx到json)

  • 将xlsx转换为json格式 --> python代码

    当时还以为xlsx格式不行于是尝试将xlsx转换为json格式,于是搜到了以下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import pandas as pd

# 读取Excel文件
df = pd.read_excel('人工标记问答对.xlsx', engine='openpyxl')
# 此处图片和py代码文件放在同一级目录下

# 将DataFrame转换为JSON格式
json_data = df.to_json(orient='records', force_ascii=False)

# 将JSON数据保存到文件
with open('人工标记问答对.json', 'w', encoding='utf-8') as json_file:
json_file.write(json_data)

print("JSON文件已保存。")
  • 可能是转换后的json格式缺了点啥,导致在导入知识库的时候源文件[√]和向量库[×],遂放弃此做法
  • 仅供参考 --> 用大模型辅助数据格式转换

另一个简单易部署的模型(ollama&llama3)

18

19

2120

当时是直接用CPU方式部署在笔者的分系统Ubuntu上,虽然如上图,部署成功了,但是跑起来……一是胡言乱语,二是电脑过热死机了……

但是在上述的云服务器中可以尝试,毕竟部署起来很方便,下一个Dokcer,再运行在CPU/GPU下安装的命令即可

笔者为了快速实现部署选择了Langchain的社区镜像,不过Ollama也值得尝试

找到的其他教程

xaut-brocademaple

240915-240916

  • Copyrights © 2024-2025 brocademaple
  • 访问人数: | 浏览次数:

      请我喝杯咖啡吧~

      支付宝
      微信