首页 > 其他分享 >模型部署系列 | 如何本地部署LLM服务?以ollama为例

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

时间:2024-09-22 20:23:41浏览次数:13  
标签:chat 为例 部署 ollama 模型 llama LLM 4B qwen1.5

简介

小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖沙茶面的小男孩。这篇小作文主要介绍如何使用 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 [email protected]: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入门 #推理加速

标签:chat,为例,部署,ollama,模型,llama,LLM,4B,qwen1.5
From: https://blog.csdn.net/ljp1919/article/details/142442803

相关文章

  • 单机版 ClickHouse 部署和 SpringBoot 程序访问
    ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C++语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。OLAP为联机分析处理,专注于统计查询;OLTP为联机事务处理,专注于增删改。ClickHouse的优势在于单表查询性能高,高吞吐的写入......
  • 从代码到部署:GitHub Actions实现Java项目CI/CD的完整实践
    从代码到部署:GitHubActions实现Java项目CI/CD的完整实践在现代软件开发中,持续集成和持续部署(CI/CD)已经成为了团队高效交付代码的关键策略。通过GitHubActions,可以轻松配置CI/CD流水线,实现从代码提交到部署的自动化工作流。本文将基于英语听力网站(studytool.site)项目介......
  • Springboot基于springboot线上记账本y8xwk--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统功能:公告信息,用户,账户类型,收入类型,支出类型,资产类型,账户信息,收入信息,支出信息,投资信息,投资类型,固定资产开题报告内容一、研究背景与意义随着数......
  • llm-app-stack
    llm-app-stackhttps://github.com/a16z-infra/llm-app-stackakaEmergingArchitecturesforLLMApplicationsThisisalistofavailabletools,projects,andvendorsateachlayeroftheLLMappstack.  LlamaIndexvsLangChainhttps://www.datacamp.com......
  • 微软:LLM对输入异常敏感
    ......
  • 吉利:探索LLM后训练的数据配比
    ......
  • Shiro漏洞复现-springboot运行报错的解决 && 项目本地tomcat部署
    一、Springboot项目运行出现的种种问题:首先需要下载环境代码,来源Github等开源平台,下载解压后使用IDEA打开,由于Shiro通常与Springboot项目捆绑,所以通常运行需要Springboot环境,如下图所示:运行时可能会出现如下报错:unabletostartServletWebServerApplicationcontextd......
  • 简单部署Memos
    前言:此处以阿里云为例,利用宝塔面板部署此文章是部署之后写的,因此有些截图是后补充的,缺少一些执行结果展示和详细步骤的缺失,请根据实际情况做调整准备购买阿里云服务器ECS着手创建实例进入阿里云控制台,我的资源→云服务器ECS;点击进入实例,此处有实例则不用管,没有则选......
  • Jenkins 基于 Docker 部署
    1、Docker、Docker-Compose安装https://www.cnblogs.com/a120608yby/p/9883175.htmlhttps://www.cnblogs.com/a120608yby/p/14582853.html2、基于Docker-Compose部署Jenkins#vimdocker-jenkins/docker-compose.ymlservices:jenkins:image:jenkins/jenkins:lts......
  • 听说ChatGPT o1推理模型即将问世,传统问答系统是否还有存在的必要?毕业设计:基于知识图谱
     OpenAI隆重推出全新一代的o1模型,该模型在多个领域展现出了非凡的能力,标志着人工智能技术的又一次飞跃。该模型专门解决比此前的科学、代码和数学模型能做到的更难的问题,实现复杂推理。那来看看并体验以下我们传统的问答系统的设计流程和具体面貌吧!!!1.1系统架构设计1.1.1......