从零开始在家用电脑上运行AI大模型

原理:得益于llama.cpp等开源量化项目的不断发展,让我们有机会在不同平台,甚至没有显卡的情况下也能运行大模型。

本文参考了大量朋友圈大佬的部分博客以及部分引用,这里也给大佬引一波流,这个是他的个人博客,本文很多内容源于此:苏洋博客

1.安装docker


为了避免环境的折腾,预先可以安装好docker,后文很多操作也是基于docker完成。

window和mac都推荐直接安装Docker Desktop:Docker Desktop: The #1 Containerization Tool for Developers | Docker

window比较特殊一点 ,需要先开启wsl和虚拟化的相关配置,cpu也要先支持虚拟化。

好在网上教程很多,官方也有相关的文档,这里就不展开了,大家自己按需安装。
 

注:window要注意,因为docker默认的镜像等资源都是存放在c盘的,需要在安装好docker进行配置修改。

2.创建一个模型存放的目录
 

因为模型普遍比较大,选定一个大一点的存放空间是很有必要的。
我这里是在D盘创建了一个docker文件夹,用于挂载本地磁盘,作为docker数据卷,用来存放模型

3.下载相关的大模型

我的配置是i5+3070ti 显存不是很够,所以选了一个7b的中文模型,这个模型是:
GitHub - LinkSoul-AI/Chinese-Llama-2-7b: 开源社区第一个能下载、能运行的中文 LLaMA2 模型!

大家可以自行下载,对于国内的下载环境也比较友好,感谢大佬们的付出

全部开源,完全可商用的中文版 Llama2 模型及中英文 SFT 数据集,输入格式严格遵循 llama-2-chat 格式,兼容适配所有针对原版 llama-2-chat 模型的优化。

我下载到的是d盘docker下面。

4.构建镜像

创建一个名叫  dockerfile  的文件

内容如下:

FROM nvcr.io/nvidia/pytorch:23.10-py3
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple && \
    pip3 install --upgrade pip  # enable PEP 660 support
RUN sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list && \
	sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
WORKDIR /app
RUN pip3 install transformers==4.35.0 huggingface-hub==0.17.3 hf_transfer==0.1.4
RUN apt-get update && apt-get install cmake -y && apt-get autoremove -y

在文件所在目录执行命令:

docker build -t soulteary/yi-34b-runtime:20231126 .

这样你就得到了一个有基础环境的镜像了 

5.启动镜像

docker run --rm -it -p 8080:8080 --gpus all --ipc=host --ulimit memlock=-1 -v D:\docker:/app soulteary/yi-34b-runtime:20231126 bash

6.编译使用 GPU 的 llama.cpp

#下载llama.cpp 
git clone https://github.com/ggerganov/llama.cpp.git

# 进入代码目录
cd llama.cpp/

#编译llama.cpp
make -j LLAMA_CUBLAS=1

这里需要花费一定的时间,耐心等待编译完成就好

这时我们会得到一些之前没有的可执行文件,如:main, server等,待会我们会用到。

7.量化大模型

# 安装需要的包
python3 -m pip install -r requirements.txt


# 预量化模型
python3 convert.py ../chinese-llama-2-13b-hf/

完成后chinese-llama-2-13b-hf目录下会多出一个ggml-model-f16.gguf文件

然后我们进一步量化

./quantize ../chinese-llama-2-13b-hf/ggml-model-f16.gguf ../chinese-llama-2-13b-hf/ggml-model-q4_0.gguf q4_0

完成后chinese-llama-2-13b-hf目录下会多出一个ggml-model-q4_0.gguf文件,这个就是我们待会用到的模型了

8.运行大模型

#切换目录
cd /app

#拷贝启动文件到/app下, 这里我们使用server来启动,能给我们开启一个webui界面
cp llama.cpp/server .

#用server启动大模型
./server --ctx-size 2048 --host 0.0.0.0  --n-gpu-layers 32 --model ./chinese-llama-2-13b-hf/ggml-model-q4_0.gguf

这一步同样会花费很多时间

 出现

后就可以访问浏览器  http://127.0.0.1:8080/开始体验你的大模型了

参考资料:

1.本地运行“李开复”的零一万物 34B 大模型 - 苏洋博客

2.GitHub - LinkSoul-AI/Chinese-Llama-2-7b: 开源社区第一个能下载、能运行的中文 LLaMA2 模型!

3.https://github.com/ggerganov/llama.cpp 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将模型转移到GPU上运行,需要确保你的计算机有可用的GPU并且已经安装了相应的CUDA工具包和深度学习框架。 以下是一个模型转移到GPU上运行的基本步骤: 1. 检查GPU是否可用:在Python中使用`torch.cuda.is_available()`函数检查CUDA是否可用。 2. 将模型转移到GPU上:使用`model.cuda()`函数将模型转移到GPU上。 3. 将数据转移到GPU上:使用`data.cuda()`函数将数据转移到GPU上。 4. 将模型参数和优化器转移到GPU上:使用`model.to(device)`和`optimizer.to(device)`将模型和优化器转移到GPU上。 5. 在训练过程中使用GPU:在训练迭代过程中,将数据和模型的输入和输出转移到GPU上。 6. 在测试过程中使用GPU:在测试过程中,将数据和模型的输入和输出转移到GPU上。 以下是一个示例代码,将模型转移到GPU上运行: ``` import torch import torch.nn as nn import torch.optim as optim # 定义模型 class MyModel(nn.Module): def __init__(self): super(MyModel, self).__init__() self.fc1 = nn.Linear(10, 5) self.fc2 = nn.Linear(5, 1) def forward(self, x): x = torch.relu(self.fc1(x)) x = self.fc2(x) return x # 检查CUDA是否可用 device = torch.device("cuda" if torch.cuda.is_available() else "cpu") # 初始化模型和优化器 model = MyModel().to(device) optimizer = optim.SGD(model.parameters(), lr=0.01) # 将数据转移到GPU上 inputs = torch.randn(5, 10).to(device) labels = torch.randn(5, 1).to(device) # 训练模型 for epoch in range(10): optimizer.zero_grad() outputs = model(inputs) loss = nn.functional.mse_loss(outputs, labels) loss.backward() optimizer.step() print("Epoch [{}/{}], Loss: {:.4f}".format(epoch+1, 10, loss.item())) # 测试模型 test_inputs = torch.randn(2, 10).to(device) with torch.no_grad(): test_outputs = model(test_inputs) print("Test Outputs:", test_outputs) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值