模型部署系列 | 如何本地部署LLM服务?以ollama为例

简介

小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖沙茶面的小男孩。这篇小作文主要介绍如何使用 ollama 在本地部署大模型服务。更多关于大模型相关,如模型解读、模型微调、模型部署、推理加速等,可以留意本微信公众号《小窗幽记机器学习》。

安装ollama

安装过程需要访问github,如果网络不好,可以根据自己的实际需要预先进行如下代理设置(所以看自己的代理,):

git config --global url."https://github-proxy,XXX.com/".insteadOf "https://github.com/"

也可以使用如下的方式配置代理:

export HTTPS_PROXY=XXX.com:8080
export HTTP_PROXY=XXX.com:8080

再执行以下命令:

curl -fsSL https://ollama.com/install.sh | sh

如果由于网络原因,也可以直接下载Linux版本,然后重命名为ollama,再修改install.sh中的TEMP_DIR路径为ollama文件所在目录。最后执行bash install.sh直接进行安装。

Linux上更具体的安装细节可以参考官方说明。

在安装完Ollama之后,我们需要准备一个已经训练好的大型语言模型。Ollama支持多种不同的模型格式,包括Hugging Face的Transformers模型、PyTorch模型等。

启动服务

如何利用ollama快速启动一个大模型服务?

方法1:Ollama官方下载

可以通过ollama library直接查阅目标模型是否存在,比如想要运行Qwen,可以直接运行如下:

ollama run qwen

方法2:本地模型

将从hf上下载的pytorch模型文件转为UUGF格式。

clone ollama/ollama 仓库:

git clone git@github.com:ollama/ollama.git ollama
cd ollama

fetch 该仓库中的 llama.cpp submodule:

git submodule init
git submodule update llm/llama.cpp

安装Python依赖:

pip3 install -r llm/llama.cpp/requirements.txt -i https://mirrors.cloud.tencent.com/pypi/simple

模型格式转换:

python3 llm/llama.cpp/convert-hf-to-gguf.py /model_zoo/LLM/Qwen/Qwen1.5-4B-Chat/ --outtype f16 --outfile qwen1.5-4B-chat.gguf

构建quantize工具:

make -C llm/llama.cpp quantize

当然,如果此前已经使用过llama.cpp,那么可以直接使用已经编译出的llama.cpp/build/bin/quantize工具。

模型量化:

/Repository/LLM/llama.cpp/build/bin/quantize qwen1.5-4B-chat.gguf qwen1.5-4B-chat_q4_0.gguf q4_0

至此,生成量化后的模型qwen1.5-4B-chat_q4_0.gguf

-rw-r--r--  1 root        root        7.4G Apr 13 08:08 qwen1.5-4B-chat.gguf
-rw-r--r--  1 root        root        2.2G Apr 13 08:12 qwen1.5-4B-chat_q4_0.gguf

新建Modelfile,比如名为 qwen1.5-4B-chat_q4_0.mf

FROM qwen1.5-4B-chat_q4_0.gguf

# set the temperature to 1 [higher is more creative, lower is more coherent]
PARAMETER temperature 0.7
PARAMETER top_p 0.8
PARAMETER repeat_penalty 1.05
PARAMETER top_k 20

TEMPLATE """{{ if and .First .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}<|im_start|>user
{{ .Prompt }}<|im_end|>
<|im_start|>assistant
{{ .Response }}"""

# set the system message
SYSTEM """
You are a helpful assistant.
"""

在创建模型之前需要注意检测是否已经启动 ollama 服务,如果没有启动,则通过以下命令启动:

ollama serve &

可以通过以下命令查看model清单:

ollama list

结果如下:

[GIN] 2024/04/13 - 08:29:44 | 200 |       43.91µs |       127.0.0.1 | HEAD     "/"
[GIN] 2024/04/13 - 08:29:44 | 200 |    5.550372ms |       127.0.0.1 | GET      "/api/tags"

创建模型:

ollama create qwen1.5-4B -f qwen1.5-4B-chat_q4_0.mf

此时再运行ollama list,结果如下:

[GIN] 2024/04/13 - 08:33:33 | 200 |      31.789µs |       127.0.0.1 | HEAD     "/"
[GIN] 2024/04/13 - 08:33:33 | 200 |   13.834699ms |       127.0.0.1 | GET      "/api/tags"
NAME                    ID              SIZE    MODIFIED
qwen1.5-4B:latest       2ca4f59f16eb    2.3 GB  About a minute ago

启动模型服务:

ollama run qwen1.5-4B

输入,"你好,你是谁"

API测试

如何通过API测试模型服务?API的详情可以参考官方说明。

对Chat接口进行测试:

curl http://localhost:11434/api/chat -d '{
  "model": "qwen1.5-4B",
  "messages": [
    { "role": "user", "content": "你好,你是谁" }
  ],
  "stream": false
}'

以上设置非流式返回:

{"model":"qwen1.5-4B","created_at":"2024-04-13T08:41:52.481530089Z","message":{"role":"assistant","content":"你好,我是通义千问。我是一个基于阿里云的大规模语言模型,能够回答各种问题、创作文字,还能表达观点、撰写代码。有什么我可以帮助你的吗?"},"done":true,"total_duration":367232392,"load_duration":8591084,"prompt_eval_duration":26868000,"eval_count":40,"eval_duration":331108000}

对 generate 结果进行测试:

curl http://localhost:11434/api/generate -d '{
  "model": "qwen1.5-4B",
  "prompt": "你是谁?",
  "stream": false
}'

接口返回:

{"model":"qwen1.5-4B","created_at":"2024-04-13T08:50:19.674913783Z","response":"我是阿里云开发的超大规模语言模型,我叫通义千问。","done":true,"context":[151644,872,198,105043,100165,11319,151645,198,151644,77091,198,104198,102661,99718,100013,9370,71304,105483,102064,104949,3837,35946,99882,31935,64559,99320,56007,1773],"total_duration":180988339,"load_duration":7694382,"prompt_eval_duration":26834000,"eval_count":18,"eval_duration":145800000}

总结

本文主要介绍如何安装ollama,并演示2种加载模型的方法: 

(1)拉取ollama官方已经有的模型,进行LLM服务部署。

(2)加载本地模型部署大模型服务。 

最后,对部署的LLM服务的接口进行测试。#大模型部署 #LLM部署 #如何部署ollama #模型框架 #AI入门 #推理加速

<think>嗯,用户问的是如何用Anaconda和Ollama来训练本地部署的DeepSeek模型。首先,我需要确认这几个工具和模型之间的关系。Anaconda是Python的环境管理工具,Ollama是一个用于本地运行大模型的工具,而DeepSeek模型可能是指深度求索公司开发的某个大语言模型,比如DeepSeek-R1或者DeepSeek-V2之类的。 首先,我得想清楚用户的需求。用户可能想在本地训练或微调一个DeepSeek的模型,使用Anaconda管理环境,Ollama部署。但Ollama目前主要支持的是模型的运行和微调,可能不支持从头训练,所以用户可能指的是微调。不过Ollama支持的模型列表里是否有DeepSeek的模型呢?比如,Ollama的官方模型库里有Llama、Mistral等,但DeepSeek的模型可能需要用户自己导入。所以可能需要先下载DeepSeek的模型文件,转换成Ollama支持的格式。 接下来,步骤大概会是这样的:首先用Anaconda创建Python环境,安装必要的库,比如PyTorch、Transformers等。然后下载DeepSeek的模型,可能是Hugging Face上的,比如deepseek-ai/deepseek-llm-7b-chat这样的模型。接着,可能需要将模型转换为Ollama支持的GGUF格式,使用llama.cpp或者类似工具进行转换。之后,配置Ollama的Modelfile,创建Ollama模型,并进行微调。微调的话需要准备数据集,可能使用Ollama的命令行工具或者编写Python脚本进行参数调整。 不过需要注意,Ollama是否支持微调功能。目前Ollama主要是运行模型,微调可能需要用其他方法,比如Hugging Face的Trainer或者PEFT库来进行参数高效微调。这时候可能需要将Ollama和微调流程分开,Ollama用于部署,而训练部分用Transformers库来处理。 另外,用户可能混淆了训练和微调的概念。如果是本地训练,从头开始训练一个大模型需要大量计算资源,可能不现实。所以更可能的情况是微调预训练的DeepSeek模型。这时候步骤应该是:设置Anaconda环境,安装依赖,加载预训练模型和分词器,准备数据集,配置训练参数,进行微调,然后保存模型,最后用Ollama加载微调后的模型。 不过Ollama的使用流程通常是拉取现有模型,比如ollama run llama2。如果要使用自定义模型,需要创建Modelfile,指定模型路径和参数。因此,可能需要将微调后的模型转换成Ollama支持的格式,比如GGUF,然后通过Modelfile来加载。 总结下来,步骤可能包括:1. 配置Anaconda环境;2. 下载DeepSeek模型;3. 转换模型格式为GGUF;4. 创建Ollama Modelfile;5. 微调模型(可能需要其他工具);6. 部署Ollama。 同时需要检查DeepSeek模型的许可协议,确保允许微调和本地部署。另外,硬件要求也是一个重点,需要足够的GPU内存。如果用户没有GPU,可能需要用量化模型或者调整参数。 可能遇到的错误包括模型格式不兼容、依赖版本冲突、内存不足等。需要提醒用户注意这些点,并参考相关文档和社区支持。</think>以下是使用 Anaconda 和 Ollama本地训练/微调 DeepSeek 模型的步骤指南(以 **DeepSeek-7B** 为): --- ### **一、准备工作** 1. **硬件要求** - 建议 NVIDIA GPU(至少 16GB 显存) - 内存建议 32GB+,存储 50GB+ 可用空间 2. **安装 Anaconda** ```bash wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh bash Anaconda3-2024.02-1-Linux-x86_64.sh ``` 3. **安装 Ollama** ```bash curl -fsSL https://ollama.com/install.sh | sh ``` --- ### **二、配置 Anaconda 环境** ```bash conda create -n deepseek python=3.10 conda activate deepseek pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 pip install transformers datasets peft accelerate ``` --- ### **三、获取 DeepSeek 模型** 1. **从 Hugging Face 下载模型** ```python from transformers import AutoModelForCausalLM, AutoTokenizer model = AutoModelForCausalLM.from_pretrained("deepseek-ai/deepseek-llm-7b-chat") tokenizer = AutoTokenizer.from_pretrained("deepseek-ai/deepseek-llm-7b-chat") model.save_pretrained("./deepseek-7b") ``` 2. **转换为 Ollama 格式 (GGUF)** ```bash git clone https://github.com/ggerganov/llama.cpp cd llama.cpp && make python3 convert.py --outtype f16 ./deepseek-7b ``` --- ### **四、微调训练(示)** 1. **准备数据集**(JSON 格式) ```json [ {"instruction": "解释量子力学", "input": "", "output": "..."}, {"instruction": "写一首关于春天的诗", "input": "", "output": "..."} ] ``` 2. **使用 PEFT 微调** ```python from peft import LoraConfig, get_peft_model lora_config = LoraConfig(r=8, lora_alpha=32, target_modules=["q_proj", "v_proj"]) model = get_peft_model(model, lora_config) # 配置 Trainer 进行训练... ``` --- ### **五、Ollama 本地部署** 1. **创建 Modelfile** ```text FROM ./deepseek-7b/ggml-model-f16.gguf PARAMETER num_ctx 4096 PARAMETER temperature 0.7 ``` 2. **构建并运行模型** ```bash ollama create deepseek-custom -f Modelfile ollama run deepseek-custom ``` --- ### **六、关键注意事项** 1. **量化建议**(显存不足时) ```bash ./quantize ./deepseek-7b/ggml-model-f16.gguf ./deepseek-7b/ggml-model-q4_0.gguf q4_0 ``` 2. **资源监控** - 使用 `nvidia-smi` 监控 GPU 使用 - 训练时建议使用 `accelerate` 库优化分布式训练 3. **官方参考** - DeepSeek 模型库:https://huggingface.co/deepseek-ai - Ollama 文档:https://github.com/ollama/ollama --- 通过以上步骤,您可以在本地实现 DeepSeek 模型的定制化训练与部署。如果遇到显存不足问题,建议尝试更小的量化版本(如 q4_k)或使用参数冻结技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值