Ollama 在人工智能技术迅猛发展的今天,大型语言模型(LLM)的应用越来越广泛。Ollama作为一款创新的开源框架,为开发者和研究者提供了在本地环境高效部署和运行LLM的全新解决方案。
跨平台安装指南 Ollama支持主流操作系统,安装过程极为简便:
• Linux用户可通过终端一键安装:
wget -O - https://setup.ollama.ai | bash• macOS用户推荐使用Homebrew:
brew tap ollama/ollama && brew install• Windows用户可通过WSL轻松部署
模型快速启动示例 启动预训练模型仅需简单指令:
ollama start qwen2.5-14b --detail添加--detail参数可实时监控token生成速率,便于性能调优。
个性化模型配置 我们可以通过Modelfile可实现深度定制,比如新建下面一个文件:
BASE qwen2.5-14b # 模型参数设置 SET temperature 0.7 SET context_length 16384 SET max_tokens 8192 # 角色定义 DEFINE ROLE "您是一位专业的技术顾问"构建自定义模型流程:
ollama build custom-model -c config.mod ollama activate custom-model --detail交互方式 importrequests response = requests.post('http://<my_ollama_server_ip>:11434/api/chat', json={ 'model':'qwen2.5:14b', 'messages': [ { 'role':'system', 'content':'You are a helpful AI assistant.' }, { 'role':'user', 'content':'What is AI Agent?' } ], 'stream': False } ) print(response.json()['message']['content'])fromopenaiimportOpenAI client = OpenAI( base_url="http://<my_ollama_server_ip>:11434/v1", api_key="xx"# 可设成任意字符串 ) response = client.chat.completions.create( model="qwen2.5:14b", messages=[ {"role":"system","content":"You are a helpful assistant."}, {"role":"user","content":"What is AI Agent?"} ] ) print(response.choices[0].message.content)核心功能亮点 实时Token生成特性:我们的系统支持生成即时token,与OpenAI API完全兼容,非常适合用于开发响应式应用。
并行模型运行:我们的系统可以同时操作多个模型,但需要注意一点。当VRAM资源有限时,Ollama会关闭一个模型以启动另一个,所以合理规划资源至关重要。
高度定制化设定:通过API调用,我们可以进行各种自定义设置,尽管这提供了极大的灵活性,但对初学者和用于生产环境的服务器可能不是那么友好。
CPU兼容和智能资源管理:如果VRAM资源不足,我们的系统可以智能地将模型转移到CPU上执行,这使得在GPU内存受限的系统上也能够运行大型模型服务。
编程语言无关:你可以自由选择Python、JavaScript、Go等编程语言,或者任何具有HTTP功能的编程语言进行开发。
vLLM 在深度学习推理领域,vLLM框架凭借其卓越的性能表现脱颖而出。作为基于PyTorch构建的专用解决方案,该框架深度融合CUDA加速技术,通过创新性的连续批处理机制、智能内存分配策略以及分布式张量计算能力,为大规模语言模型部署提供了工业级的高效运行环境。
相较于Ollama这类简易工具,vLLM更适合采用容器化部署方案。Docker的标准化环境封装特性能够有效解决跨平台兼容性问题。部署前需确保满足以下技术要求:
下载模型 以下演示如何在容器环境中部署Qwen2.5-14B模型:
首先建立模型存储目录并获取量化模型:
mkdir -p model_repository/Qwen2.5-14B/ curl -L https://huggingface.co/lmstudio-community/Qwen2.5-14B-Instruct-GGUF/resolve/main/Qwen2.5-14B-Instruct-Q4_K_M.gguf \ -o model_repository/Qwen2.5-14B/model.gguf除了使用curl 命令下载模型,也可以通过脚本下载:
export HF_ENDPOINT=https://hf-mirror.com pip install modelscope使用modelscope下载并缓存到/usr/local,模型地址可以改成你想要下载的
importtorch frommodelscopeimportsnapshot_download, AutoModel, AutoTokenizer importos frommodelscope.hub.apiimportHubApi api = HubApi() # 有的地方需要,key在 modelscope.cn/models 右上角个人那边 # api.login('xxx你的账号对应的key') model_dir = snapshot_download('Qwen/Qwen2.5-72B-Instruct-AWQ', cache_dir='/usr/local',revision='master') print(model_dir)启动模型 我们还需要设置 generation_ config.son 文件, 为了测试方便,这里设置temperature = 0。
{ "bos_token_id": 151643, "pad_token_id": 151643, "do_sample": true, "eos_token_id": [ 151645, 151643 ], "repetition_penalty": 1.05, "temperature": 0.0, "top_p": 0.8, "top_k": 20, "transformers_version": "4.37.0" }因此,需要创建一个文件夹,其中包含这个 JSON 文件,并确保它的名称为 generation_ config. json。然后,使用多个参数运行 docker 容器:
# 需要GPU支持 docker run -it \ --runtime nvidia \ --gpus all \ --network="host" \ --ipc=host \ -v ./models:/vllm-workspace/models \ -v ./config:/vllm-workspace/config \ vllm/vllm-openai:latest \ --model models/Qwen2.5-14B-Instruct/Qwen2.5-14B-Instruct-Q4_K_M.gguf \ --tokenizer Qwen/Qwen2.5-14B-Instruct \ --host "0.0.0.0" \ --port 5000 \ --gpu-memory-utilization 1.0 \ --served-model-name "VLLMQwen2.5-14B" \ --max-num-batched-tokens 8192 \ --max-num-seqs 256 \ --max-model-len 8192 \ --generation-config config这些参数的含义如下:
--runtime nvidia --gpus all: 启用对容器的 NVIDIA GPU 支持。 --network="host": 使用主机网络模式以获得更好的性能。 --ipc=host: 允许主机和容器之间共享内存。 - v ./model:/vllm-workspace/model: 将本地模型目录装入容器,目录包含了示例的Qwen2.5–14B模型 --model: 指定 GGUF 模型文件的路径。 --tokenizer: 定义要使用的 HuggingFace tokenizer。 --gpu-memory-utilization 1: 将 GPU 内存使用率设置为 100% 。 --served-model-name: 通过 API 提供服务时模型的自定义名称,可以指定所需的名称。 --max-num-batched-tokens: 批处理中的最大token数量。 --max-num-seqs: 同时处理的序列的最大数目。 --max-model-len: 模型的最大上下文长度。交互方式 importrequests response = requests.post('http://192.168.123.23:5000/v1/chat/completions', json={ 'model':'VLLMQwen2.5-14B', 'messages': [ { 'role':'system', 'content':'You are a helpful AI assistant.' }, { 'role':'user', 'content':'What is artificial intelligence?' } ], 'stream':False } ) print(response.json()['choices'][0]['message']['content'])fromopenaiimportOpenAI client = OpenAI( base_url="http://<my_vLLM_server_ip>:5000/v1", api_key="xx" ) response = client.chat.completions.create( model="VLLMQwen2.5-14B", messages=[ {"role":"system","content":"You are a helpful assistant."}, {"role":"user","content":"What is AI Agent?"} ] ) print(response.choices[0].message.content)核心功能亮点 vLLM被专门设计用于高性能推理和生产环境,其主要特点包括:
优化的GPU效能:通过CUDA和PyTorch的配合使用,我们充分发挥了GPU的潜力,从而实现更迅速的推理过程。
批处理功能:我们实现了连续的批处理和高效的内存管理,以此来提升多个并行请求的吞吐量。
安全性:内建API密钥支持和正确的请求验证机制,而不是直接忽视身份验证。
灵活的部署方式:全面支持Docker,可以对GPU内存使用和模型参数进行精细控制。
Ollama vs vLLM 性能表现 :基准测试显示vLLM具有明显的速度优势,单请求处理时token生成速率较Ollama提升超过15%(实测数据:vLLM 29 token/s vs Ollama 25 token/s)
并发处理能力 :vLLM采用先进的资源调度算法,可高效处理高并发请求;而Ollama在并行请求处理方面存在架构限制,即使少量并发请求(如4个)也会导致系统资源争用问题。
开发便捷性 :Ollama凭借极简的交互设计脱颖而出,开发者通过单行命令即可实现模型交互;相较之下,vLLM需要掌握容器化部署技术,并需理解各类性能调优参数。
生产就绪度 :vLLM的工业级特性使其成为企业级部署的首选,包括多家知名AI服务商在内的技术团队都采用其作为核心推理引擎。该框架支持细粒度的资源分配和弹性扩展,完美适配云原生环境。
安全机制 :vLLM内置完善的认证体系,支持基于token的访问控制;而Ollama默认采用开放式访问模式,需要额外配置网络层防护措施来保证服务安全。
技术支持体系 :Ollama的文档注重快速上手体验,但技术实现细节相对匮乏,社区论坛中的关键技术问题经常得不到有效解答。vLLM则建立了立体化的技术支持体系,包括:
对比维度 Ollama vLLM 核心定位 部署难度 简单:一键安装,支持 Mac/Linux/Windows(WSL) 较复杂:依赖 Python 环境,需手动配置 GPU 驱动和 CUDA 硬件要求 低:CPU 可用(推荐 16GB+ 内存),可选 GPU 加速 高:必须 NVIDIA GPU(显存越大越好),依赖 CUDA 计算 模型支持 内置主流开源模型(Llama2、Mistral、DeepSeek 等),自动下载预训练模型 支持 HuggingFace 格式模型,需手动下载和转换模型文件 运行性能 使用场景 交互方式 命令行直接对话,支持类似 ChatGPT 的交互界面 需通过 API 调用(OpenAI 兼容接口),无内置对话界面 资源占用 扩展性 新手友好度 社区支持 典型用途
总结 如果你想在本地或远程服务器上快速试验大模型,Ollama是理想之选,其易用性让初次使用大型语言模型的开发者能平滑入门。而对于注重性能、可扩展性和资源优化的生产环境,vLLM表现出色,高效处理并行请求和优化GPU利用,且文档完备,使其成为生产环境大规模部署的强力候选者,尤其在充分挖掘硬件性能方面。