在windows上部署chatGLM2和LLama2简单笔记

更新记录

23.10.2 刚开始玩,比较肤浅,后面随时更新

23.10.28 加入了 llama2中文版

1. ChatGLM2-6B

  1. github上打包下载工程,但这个是不包含模型的
  2. github项目往下拉,给了hugging face和清华网盘的两个下载地址,当然清华网盘的比较快,但清华网盘只有模型,其他配套的文件不全。所以可以先下载hugging face上的各种小文件,然后再去清华网盘下载模型文件。

image.png

我自己12G显卡,以跑图中第一个,算是全模型了,有点慢,但能跑;如果显卡不太行,可以跑第二个int4的(也是推荐两个地方结合下载),这个装在速度快很多,生成的东西我觉得也能看。

  1. 根据github的requirements.txt,安装一下依赖库:
pip install -r requirements.txt

我这里报了一个错忘了,忘了记录了,大概是pytorch版本和cuda不兼容的问题,注意pytorch版本要2.0以上,cuda我用的11.8(chatglm和后面的llama2都能跑)。下面语句就是安装pytorch2.0.x的cuda118对应版本,我这里装完就好了。


pip install torch==2.0.0+cu118 torchvision==0.15.1+cu118 torchaudio==2.0.1 --index-url https/download.pytorch.org/whl/cu118
  1. 代码需要把模型地址改一下,使之能正确调用本地模型:
tokenizer = AutoTokenizer.from_pretrained(r"\模型路径\", trust_remote_code=True) 
model = AutoModel.from_pretrained(r""\模型路径\", trust_remote_code=True).cuda()

推荐把hugging face和清华网盘无论哪下载的模型(注意要下载hugging face中的所有文件)都拷贝到一个单独的目录下,然后修改代码中对应的语句中的路径即可(建议写绝对路径)。
下面提供的三个例子文件中,都有上面这这两处语句,一眼都能看见,很好改。

4,三个demo,理论上可以直接用:
python cli_demo.py (命令行,完全没问题)
python web_demo.py *(基于Gradio,我跑的时候网页能开,能输入问题,然后就卡住了,据说是Gradio有个谷歌字体检查的的什么问题,但简单搞了一下没搞定,。。。 )
streamlit run web_demo2.py(基于Streamlit ,官方推荐用这个,我跑的时候Streamlit 报错,好像和记录历史啥的有关,如果看到报错中history啥的,可以把 web_demo2.py中大概43-47行注释掉)

总之这就算是能用了,还是挺顺利的。

2. llama2中文版

        我这里搭建是推理模型,没试过微调咋搞。

        网上教程有两个流派,一个是直接用llama cpp,一个是用text-generation-webui,明显用第二种方法更加简单。流程上,直接参考webui这个主页上的教程即可,要么one-click安装,要么用下面的manual installation using conda,但我遇到坑了,感觉还是手动方式更容易必坑。此外中途遇到一些网络问题,有点麻烦。

        我遇到坑是在2023.10月左右,后续新版可能会解决。

        主要流程:

1. 建立并激活一个conda环境,官网要求python=3.11版本,实测应该用3.10,因为打开他自己的requirements.txt,发现他自己的包都是面向3.10的。

2. 下面安装torch,官网提示应该用cu121版本,但我实测用118版本也行。

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

3. 安装CUDA runtime libraries,注意cuda版本,我这里仍然用11.8(11.8.0)

conda install -y -c "nvidia/label/cuda-11.8.0" cuda-runtime

4. 下载 text-generation-webui代码,并解压,在激活的conda环境中执行:

pip install -r requirements.txt

如果是非英伟达显卡,或amd cpu等,需要酌情使用不同的requirements。这个建议直接看官网教程,有个详细的表和一些对应执行的命令。

        这一步是git和pip混合执行的,我在这里遇到了一些网络问题,挺麻烦的。此外如果用python的非3.10版本,这里就肯定过不去了,需要手动到requirements.txt里面该版本,还是很费劲的。

5. 下载模型,可以直接去这里下载模型,有链接指向百度网盘,还是比较快的。 GitHub - ymcui/Chinese-LLaMA-Alpaca-2: 中文LLaMA-2 & Alpaca-2大模型二期项目 + 16K超长上下文模型 (Chinese LLaMA-2 & Alpaca-2 LLMs, including 16K long context models)中文LLaMA-2 & Alpaca-2大模型二期项目 + 16K超长上下文模型 (Chinese LLaMA-2 & Alpaca-2 LLMs, including 16K long context models) - GitHub - ymcui/Chinese-LLaMA-Alpaca-2: 中文LLaMA-2 & Alpaca-2大模型二期项目 + 16K超长上下文模型 (Chinese LLaMA-2 & Alpaca-2 LLMs, including 16K long context models)icon-default.png?t=N7T8https://github.com/ymcui/Chinese-LLaMA-Alpaca-26. 下载好的模型连同目录放到text-generation-webui的model文件夹下面,执行:

python server.py

然后根据提示打开web页面即可,首次使用需要到配置界面load一下模型。

其他详细的用法还在摸索。

3. llama2-7B(英文版)

  1. 这个有点费劲,貌似资源要求也比较高,但我这个配置也跑起来了。也就是说现在这两个模型都能在我的pytorh+cuda11.8+2060的环境下跑。
  2. 下载github上官网的东西,打包先存下来。
  3. 根据github上的要求,需要去meta申请模型,此时要留个邮箱,这个邮箱应该是hugging face的注册邮箱,要一致。填写资料的时候注意写其他国家....
  4. 审核大概几十分钟后就通过了,但页面上说要1-2天。邮件会给一个很长的链接(密钥),那个是给git lfs用的,我没用那个。
  5. 审核通过后,进入hugging face的llama2官方页面,用邮箱注册登录,不登陆下载不了;我直接就在网页下载了7B模型(按理说也4或8bit的13B也能跑),中间断了三次,还好edge能断点续传,13G多就算是顺利下载了(包括各种乱配套文件啥的)。
  • 注意,实际github内容的根目录下有个download.sh,运行:

-bash download.sh
  • 就可以自动下载(此时要填写meta邮件里给的密钥),但我感觉还不如直接浏览器下载方便。
  1. 如果是手动下载,则解压github内容之后,在其目录下创建一个子目录:llama-2-7b,如果手动下载了其他模型,就到download.sh中看一下代码,就是如果自动下载会下载到哪。

if [[ $m == "7B" ]]; then
        SHARD=0
        MODEL_PATH="llama-2-7b"
    elif [[ $m == "7B-chat" ]]; then
        SHARD=0
        MODEL_PATH="llama-2-7b-chat"
    elif [[ $m == "13B" ]]; then
        SHARD=1
        MODEL_PATH="llama-2-13b"
    elif [[ $m == "13B-chat" ]]; then
        SHARD=1
        MODEL_PATH="llama-2-13b-chat"
    elif [[ $m == "70B" ]]; then
        SHARD=7
        MODEL_PATH="llama-2-70b"
    elif [[ $m == "70B-chat" ]]; then
        SHARD=7
        MODEL_PATH="llama-2-70b-chat"

这样看大致就能明白了吧(看MODEL_PATH)。
如果是自动下载,只要网络没问题,这些事情都不需要自己搞。

  1. 如果是ubuntu下,现在就能用了,如果是windows下,需要到llama子目录下,找到generation.py,第85行,把"nccl
    "改为"gloo",因为windows不支持nccl。

     

    image.png

  2. 目前我只跑了两个测试(和chatGLM的感觉不一样,这个只是简单的测试),在命令行,切换到llama-main的根目录执行:
    torchrun --nproc_per_node 1 example_text_completion.py --ckpt_dir llama-2-7b\ --tokenizer_path tokenizer.model --max_seq_len 128 --max_batch_size 16
    torchrun --nproc_per_node 1 example_chat_completion.py --ckpt_dir llama-2-7b\ --tokenizer_path tokenizer.model --max_seq_len 128 --max_batch_size 16
    注意:
  • 我这里max_batch_size 不能小于6,否则会报错。
  • llama-2-7b\ 这个路径和存在模型的地址一致。
  • 这两个代码只能实现很简单例子,比如补全句子、翻译啥的,而且还是英文的,其他的还在摸索。

4. Stable Diffusion WEB(1.6)+conda

记录一下几个坑。 感觉conda和SDW不是特别搭配,网上有其他教程,使用下来都不是很顺。SDW原本倾向于自己管理下载,并建立一个venv环境。但确实能搞。

在我之前的旧机器上,直接使用系统python环境,但之后SDW自己建了一个venv环境(貌似会继承全局的一些库),现在尝试不用它自己的venv,用conda管理他的依赖库。

我的大致步骤:

1. 新搞了个4090,在新机的情况下用miniconda建环境,,即在命令行环境先create再activate,然后切换到stable-diffusion-web的目录下,(注意在激活的conda环境中)执行:

pip install -r requests_versions.txt

注意,其根目录下还有个request.txt,但这里面没指定库的版本。

2.我用的conda环境指定了python3.10版本,之前用3.10.10,在pip安装时,会报版本高了,但实际应该也能用,因为我在之前机器上用的也是3.10.10,并没有问题。

我自己卡在pip这块,卡在:

Preparing metadata (setup.py) ...

网上教程的提示,一个是pip指令加上 --verbose看看详细报错,另一个是加上--use-pep517参数。但这个问题我在之前老机器上,直接用系统环境pip没出现过。

3.  还是要手动装一下pytorch,我还是cuda 11.8 ,所以指令和上文是一样的:


pip install torch==2.0.0+cu118 torchvision==0.15.1+cu118 torchaudio==2.0.1 --index-url https/download.pytorch.org/whl/cu118

4. 在stable-diffusion-web目录下,找到webui-user.bat(注意后续就用这个启动),打开编辑,修改:

set VENV_DIR=-

注意实际就是加一个“-”。我在没有修改这块之前,执行webui.bat或webui-user.bat,老提示找不到python,或者venv环境有问题等,我自己尝试做了一些其他修改都没啥用,网上教程有用其他办法的,就是在webui-user.bat中填一些语句,但我感觉不是很合理,也没试(也许人家是对的)。但加个“-”是最简单的。

5. 注意上述操作都在激活的conda环境中执行

6. 注意装个git,然后给git搭梯子。我手动下载了一些ckpt啥的,然后放在stable-diffusion-web目录的model子目录下。

7. 我实际是把一个肯定能用的stable-diffusion-web拷贝到了新机上,但执行webui-user.bat时,仍然会调用git从huggingface和github上下载东西,而且会说repositories下已经有东西,在owner不同啥的。如果梯子好用,这些问题都不大,但这里我感觉我没弄好,应为原本所需要的文件都有,不应该再下载一遍了,应该有办法做的更简单。

8. 注意梯子要设置本地路径不用梯子,否则访问127.0.0.1:7680也会有问题。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值