如何使用 Ollama 运行 Qwen 大模型

Ollama 可以很好地支持 阿里巴巴出品的 Qwen 1.5和Qwen 2.0 大模型,让我们看看如何使用 Ollama 运行 Qwen吧。

Ollama 简介

Ollama 是一个开源的大型语言模型服务工具,它帮助用户快速在本地运行大模型。通过简单的安装指令,用户可以执行一条命令就在本地运行开源大型语言模型,如qwen。Ollama极大地简化了在Docker容器内部署和管理LLM的过程,使得用户能够快速地在本地运行大型语言模型。

Qwen 大模型

Qwen是一个全能的语言模型系列,包含各种参数量的模型,如 Qwen(基础预训练语言模型,即基座模型)和 Qwen-Chat(聊天模型,该模型采用人类对齐技术进行微调)。基座模型在众多下游任务中始终表现出卓越的性能,而聊天模型,尤其是使用人类反馈强化学习(RLHF)训练的模型,具有很强的竞争力。聊天模型Qwen-Chat拥有先进的工具使用和规划能力,可用于创建agent应用程序。即使在使用代码解释器等复杂任务上,Qwen-Chat与更大的模型相比也能表现出极具竞争力的性能。此外,官方还开发了编码专用模型 Code-Qwen 和 Code-Qwen-Chat,以及基于基座模型开发的数学专用模型 Math-Qwen-Chat。

安装硬件要求

CPU:当前最佳目标是第 11 代英特尔 CPU 或基于Zen4 的 AMD CPU,因为它支持AVX512,可加速 AI 模型所需的矩阵乘法运算。CPU 指令集功能比核心数量更重要,由于内存带宽增加,较新的 CPU 中的 DDR5 支持对于性能也很重要。

RAM:获得良好体验的最低要求:16GB 是有效运行 7B 参数等模型的起点。它足以舒适地运行较小的模型或谨慎地管理较大的模型。

磁盘空间:实际最小值:大约 50GB就足够了。

GPU:非强制性但建议增强性能,GPU 可以显着提高模型推理性能。但是,运行量化模型的能力和对 VRAM 的要求取决于 GPU 的性能。对于运行量化模型:支持 4 位量化格式的 GPU 可以更有效地处理大型模型,所需的 VRAM 明显更少,如7B 模型需要 4 GB,13B 模型需要 8 GB,30B 模型需要 16 GB,65B 模型需要 32 GB。

如何使用 Ollama 运行 Qwen

下载安装Ollama

Ollama下载地址:https://ollama.com/download,在下载页面选择Windows平台,然后点击下载按钮。

Download Ollama for Windows

下载完成后,双击下载的安装程序,点击Install进行安装。安装完成没有提示,我们打开一个终端,本文以CMD为例,现在Ollama已经安装完了。在cmd窗口输入ollama,即可了解常用的Ollama命令。

Ollama comand line

运行Qwen

Qwen2 使用 29 种语言的数据进行训练,包括英语和中文。它有 4 种参数大小可供选择:0.5B、1.5B、7B、72B。在 7B 和 72B 模型中,上下文长度已扩展到 128k 个标记。
Windows平台,在CMD中输入如下命令运行qwen大语言模型:

# 运行 Qwen 1.5,默认4b
ollama run qwen

# 运行Qwen2,默认7b
ollama run qwen2
Ollama run Qwen

初次运行过程稍长,需要下载几个G的模型文件到本地。下载完成后就可以直接在终端与qwen模型交互了。

Chat with Qwen using Ollama

使用Python通过qwen API生成回复

示例代码:

import requests
import json

def send_message_to_qwen(message, port=11434):
    url = f"http://127.0.0.1:{port}/api/chat"
    payload = {
        "model": "qwen",
        "messages": [{"role": "user", "content": message}]
    }
    response = requests.post(url, json=payload)
    if response.status_code == 200:
        response_content = ""
        for line in response.iter_lines():
            if line:
                response_content += json.loads(line)["message"]["content"]
        return response_content
    else:
        return f"Error: {response.status_code} - {response.text}"

if __name__ == "__main__":
    user_input = "介绍一下北京的旅游景点?"
    response = send_message_to_qwen(user_input)
    print("qwen's response:")
    print(response)

运行结果:

chat with gemma using ollama