安装步骤
以在Ubuntu 18.04 64位系统搭建LLM环境,安装《ChatGLM-6B》为例:
1、 创建GPU实例(显存8GB以上,磁盘至少40G),本文选择了带P100 GPU的 ecs.gn5-c4g1.xlarge实例,并在示例创建时选择安装cuda 11.4。设置用户名及登录密码。
2、 设置安全组配置,配置出方向端口22,并在源IP中加入本机IP。
3、 Ssh到云ECS。系统会提示正在安装CUDA,待安装完毕,查看GPU详情(若命令无法正常运行,则说明CUDA没安装好):nvidia-smi
4、 在ECS上安装相关软件包:
A、sudo apt-get update
B、安装gcc编译器(可选,系统中通常已有):sudo apt install build-essential
C、安装Python,以3.8为例:sudo apt install python3.8
D、安装miniconda:
1) 下载安装包:注意miniconda包需选择对应python版本的包
wget https://repo.anaconda.com/miniconda/Miniconda3-py38_23.3.1-0-Linux-x86_64.sh
2) 运行安装脚本,并初始化:bash Miniconda3-py38_23.3.1-0-Linux-x86_64.sh
3) (可在2中完成)初始化终端 Shell,以便运⾏conda。~/miniconda3/bin/conda init
4) 初始化完成后,运行bash命令,即可进入conda环境:bash
5) 创建⼀个新的环境(可选):conda create --name aigc python=3.8 -y
6) 激活aigc环境(可选):conda activate aigc
5、安装git:sudo apt install git
6、git clone ChatGLM-6B,并安装软件依赖:
git clone https://github.com/THUDM/ChatGLM-6B.git
cd ChatGLM-6B && pip install -r requirements.txt
pip install fastapi uvicorn
7、将模型下载到本地,从本地加载:
安装git-lfs:apt install git-lfs
git-lfs clone https://huggingface.co/THUDM/chatglm-6b
8、运行cli_demo:将代码中tokenizer和model变量中的"THUDM/chatglm-6b"更换成模型本地路径。此外,如果希望固定使用的模型实现以保证兼容性,可在tokenizer和model的 from_pretrained
调用中增加 revision="v1.1.0"
参数。v1.1.0
是当前最新的版本号。示例:/home/fsnode/chatglm-6b是本地模型路径。
tokenizer= AutoTokenizer.from_pretrained("/home/fsnode/chatglm-6b", revision="v1.1.0
",
trust_remote_code=True)
model = AutoModel.from_pretrained("/home/fsnode/chatglm-6b", revision="v1.1.0
",
trust_remote_code=True).half().cuda()
运行脚本:python cli_demo.py
9、(可选)运行web_demo:除了需要修改模型存放路径外(见上),Web如需要公网访问,还需要将web_demo.py中修改:share=True
A、安装gradio :pip install gradio
B、在ECS上运行脚本:python web_demo.py
C、本地便携机上执行如下命令,将云ECS的7860端口映射到本地(IP及用户名填实际的):
ssh -L7860:localhost:7860 root@ecs公网IP
D、在本地浏览器登录web界面:http://127.0.0.1:7860
10、运行基于Streamlit的网页版Demo(web_demo2.py):web_demo.py有个缺陷,生成的公网链接是临时的,仅72小时有效。可使用Streamlit网页版。
A、安装需要的模块:pip install streamlit pip install streamlit-chat
B、修正web_demo2.py中的模型路径"THUDM/chatglm-6b"为本地路径,并指定revision="v1.1.0"
。
C、添加安全组规则:在ECS实例安全组的入方向添加安全组规则,并放行8501端口(该端口是默认端口,也可以自定义)。
D、运行DEMO:streamlit run web_demo2.py &。如果要指定服务端口,则需要在安全组放行该端口,运行时带上端口参数,如:streamlit run web_demo2.py --server.port 6006 &
附录:Python示例代码:
>>> from transformers import AutoTokenizer, AutoModel >>> tokenizer = AutoTokenizer.from_pretrained("/home/fsnode/chatglm-6b", trust_remote_code=True) >>> model = AutoModel.from_pretrained("/home/fsnode/chatglm-6b", trust_remote_code=True).half().cuda() >>> model = model.eval() >>> response, history = model.chat(tokenizer, "你好", history=[]) >>> print(response) 你好!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。 >>> response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history) >>> print(response) 晚上睡不着可能会让你感到焦虑或不舒服,但以下是一些可以帮助你入睡的方法:
|
参考:
https://github.com/THUDM/ChatGLM-6B#readme
https://github.com/imClumsyPanda/langchain-ChatGLM
知识库+LLM羊毛推荐
阿里云近期推出了60元包月的知识库+LLM体验活动,可用于测试、开发、学习、工作助理等,入口:https://common-buy.aliyun.com/?commodityCode=hitsdb_aigcsharepre_public_cn