← 返回首页
🧠

Ollama:本地LLM运行利器

📂 llm ⏱ 2 min 300 words

--- title: "Ollama:本地LLM运行利器" description: "详细介绍Ollama的安装、使用和高级配置,轻松运行本地大语言模型" tags: ["Ollama", "本地部署", "LLM", "开源"] category: "llm" icon: "🧠"

Ollama:本地LLM运行利器

Ollama简介

Ollama是一个轻量级的本地LLM运行工具,支持一键下载和运行多种开源大语言模型。它简化了本地部署流程,让每个人都能轻松使用大语言模型。

安装Ollama

Windows/Mac

访问 https://ollama.com/download 下载安装包。

Linux

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

验证安装

ollama --version

基础使用

下载和运行模型

# 下载并运行Llama 3
ollama run llama3

# 下载并运行Qwen 2
ollama run qwen2:7b

# 下载并运行Mistral
ollama run mistral

管理模型

# 列出已下载的模型
ollama list

# 查看模型详情
ollama show llama3

# 删除模型
ollama rm llama3

# 拉取特定版本
ollama pull llama3:8b
ollama pull llama3:70b

Python API调用

基础对话

import requests
import json

def ollama_generate(prompt, model="llama3", stream=False):
    url = "http://localhost:11434/api/generate"
    payload = {
        "model": model,
        "prompt": prompt,
        "stream": stream
    }
    response = requests.post(url, json=payload)
    return response.json()["response"]

response = ollama_generate("用Python写一个快速排序算法")
print(response)

流式输出

def ollama_stream(prompt, model="llama3"):
    url = "http://localhost:11434/api/generate"
    payload = {
        "model": model,
        "prompt": prompt,
        "stream": True
    }
    response = requests.post(url, json=payload, stream=True)
    
    full_response = ""
    for line in response.iter_lines():
        if line:
            data = json.loads(line)
            if "response" in data:
                chunk = data["response"]
                print(chunk, end="", flush=True)
                full_response += chunk
    
    print()
    return full_response

多轮对话

def ollama_chat(messages, model="llama3"):
    url = "http://localhost:11434/api/chat"
    payload = {
        "model": model,
        "messages": messages,
        "stream": False
    }
    response = requests.post(url, json=payload)
    return response.json()["message"]["content"]

conversation = [
    {"role": "system", "content": "你是一个有帮助的助手。"},
    {"role": "user", "content": "什么是Docker?"}
]

response = ollama_chat(conversation)
print(response)

conversation.append({"role": "assistant", "content": response})
conversation.append({"role": "user", "content": "Docker和虚拟机有什么区别?"})
response = ollama_chat(conversation)
print(response)

模型选择指南

models = {
    "轻量级(4GB显存)": ["qwen2:1.5b", "phi3:3.8b", "gemma2:2b"],
    "中等(8GB显存)": ["llama3:8b", "qwen2:7b", "mistral:7b"],
    "高性能(16GB+显存)": ["llama3:70b", "qwen2:72b", "mixtral:8x7b"]
}

for tier, model_list in models.items():
    print(f"\n{tier}:")
    for m in model_list:
        print(f"  - {m}")

Modelfile自定义

FROM llama3

SYSTEM "你是一个专业的Python编程助手。"

PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER num_ctx 4096
# 创建自定义模型
ollama create my-assistant -f Modelfile

# 运行自定义模型
ollama run my-assistant

性能优化

# 使用GPU加速
# Ollama会自动检测并使用可用的GPU

# 调整并行请求
OLLAMA_NUM_PARALLEL=4 ollama serve

# 设置上下文长度
OLLAMA_CONTEXT_LENGTH=8192 ollama serve

集成到应用

# 使用LangChain集成
from langchain_community.llms import Ollama

llm = Ollama(model="llama3")
response = llm.invoke("解释什么是机器学习")
print(response)

常见问题

# 模型下载慢?使用镜像
OLLAMA_HOST=0.0.0.0 ollama serve

# 显存不足?
# 1. 使用更小的模型
# 2. 减小上下文长度

总结

Ollama是本地运行LLM最简单的方式,支持多种主流模型,提供Python API,适合快速搭建本地AI应用。