文章目录
利用ollama部署大模型
使用说明
整个操作过程是基于在linux
系统中使用。
硬件准备
为什么需要使用 GPU 去跑我们的大模型呢?
- 训练时间:使用
GPU
可以显著缩短模型的训练时间。例如,一个复杂的深度学习模型在GPU
上可能只需要几小时,而在CPU
上可能需要几天甚至几周。 - 模型推理:在推理阶段,尤其是需要处理大量实时数据时,
GPU
的高并行处理能力可以提供更快的响应时间和更高的吞吐量。 - 虽然
CPU
也可以用于运行大模型,但在处理深度学习任务时,GPU
的并行计算能力、计算性能和专用硬件支持使其更为适合。GPU
能够显著提升大模型的训练和推理效率,降低时间和功耗成本。
为什么需要CUDA?
-
通俗地说,
CUDA
是一种协助“CPU任务分发+GPU并行处理”的编程模型/平台,用于加速GPU和CPU之间的计算。 -
也就是说CUDA通过CPU任务分发和GPU并行处理的方式,把计算任务通过CPU分发给GPU进行并行计算加速。而GPU并行计算的能力需要CUDA借助其自带的编程接口和工具,比如C/C++语言来编写并行计算程序,并通过CUDA编译器将程序转化为可以在英NVIDIA GPU上执行的机器码快速运行。
-
所以,通过使用CUDA平台,开发者可以充分利用GPU的并行计算能力加速各种应用程序的运行速度,同时还能与CPU进行协同计算。而人工智能运算往往需要进行大规模亿级的计算,这也就是CUDA在人工智能领域大行其道的原因之一。
部署教程
1. 创建Conda虚拟环境
conda create -n gyy1(输入虚拟环境名字) python=3.9(输入自己需要的版本号)
conda activate gyy1
什么是Conda?
Conda
是一个开源跨平台的包管理、环境管理工具,适用于 Python、Lua、Scala、Java、JavaScript、C/C++、FORTRAN 多种开发语言,是目前最流行的 Python 环境管理工具。
Conda 作为包管理器可帮助您查找和安装包, 如果你需要一个不同版本 Python 包,你不需要切换到不同的环境管理器,因为 conda 本身就是一个环境管理器。只需几行命令,就可以设置一个完全独立的环境来运行不同版本的 Python 包,同时支持继续在正常环境中运行常用的 Python 版本。
2. 安装torch
PyTorch
是一个由Facebook的人工智能研究团队开发的开源深度学习框架,在近两年,PyTorch已经成为全球最流行的深度学习框架之一。其在GitHub上的星标数量超过了50k,被用在了各种各样的项目中,从最新的研究论文到大规模的工业应用。
pip install torch
如果发生报错,可以尝试运行以下命令,即换成清华源。
pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple
3. 安装ollama
curl -fsSl https://ollama.com/install.sh| sh
4. 运行测试ollama
systemctl status ollama #启动ollama
ollama run qwen2 #利用ollama跑模型qwen2
Ollama 常用命令
- 启动Ollama服务
ollama serve
- 从模型文件创建模型
ollama create
- 显示模型信息
ollama show
- 运行模型
ollama run 模型名称
- 列出模型
ollama list
- 查看本地模型运行列表
ollama ps
- 复制模型
ollama cp
- 删除模型
ollama rm 模型名称
- 获取有关Ollama任何命令的帮助信息
ollama help
5. 采用 docker 部署 Open WebUI
这一步花费的时间比较久,需要耐心等待……
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
其中:--add-host=host.docker.internal:host-gateway
是为了添加一个主机名映射,将 host.docker.internal
指向宿主机的网关,方便容器访问宿主机服务
一键启动
一键启动 Ollama + Open WebUI~
docker -compose up -d
docker ps #下载启动完成后,利用这条命令,列出所有容器,检查是否安装成功
什么是docker?
Docker
是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在本地编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
简单的理解,Docker类似于集装箱,各式各样的货物,经过集装箱的标准化进行托管,而集装箱和集装箱之间没有影响。也就是说,Docker平台就是一个软件集装箱化平台,这就意味着我们自己可以构建应用程序,将其依赖关系一起打包到一个容器中,然后这容器就很容易运送到其他的机器上进行运行,而且非常易于装载、复制、移除,非常适合软件弹性架构。
Open WebUI 使用
在打开主机 3000 端口的防火墙之后,浏览器中输入:http://your_ip:3000/,注册一个账号:
利用命令 ollama run aputa/harvey
,可以将模型下载到本地,刷新WebUI
将模型部署为API
一键启动 REST API 服务:
ollama serve
生成回复
示例代码:
curl http://129.150.63.xxx:11434/api/generate -d '{
"model": "qwen2:0.5b",
"prompt":"Why is the sky blue?",
"stream":false
}'
stream
参数用于控制 API
是否以流式的方式返回响应。
stream: true
:当 stream 被设置为 true 时,API 会逐步返回生成的内容,而不是一次性返回整个响应。这种方式有助于更快地获取部分结果,尤其是在处理较长的生成时,用户可以逐步看到内容的生成进展。
stream: false
:当 stream 被设置为 false 时,API 会等待生成完整的响应后再一次性返回所有内容。对于较短的请求,这种方式可能更适合。
模型对话
示例代码
curl http://localhost:11434/api/chat -d '{
"model": "qwen2:0.5b",
"messages": [
{ "role": "user", "content": "why is the sky blue?" }
],
"stream":false
}'
更多参数和使用,可参考 API 文档:
https://github.com/ollama/ollama/blob/main/docs/api.md