普通电脑配置即可本地运行大模型,本地部署LLM最简单的方法
OLLAMA
Ollama是一个开源框架,专门设计用于在本地运行大型语言模型(LLM)。它的主要功能是在Docker容器中部署和管理LLM,使得在本地运行大模型的过程变得非常简单。Ollama通过简单的安装指令,允许用户执行一条命令就能在本地运行开源大型语言模型,例如Llama 2。
Ollama的特点包括:
- 开箱即用:用户可以通过一条命令快速启动模型。
- 可扩展性:支持导入更多的自定义模型,与多种工具集成使用。
- 轻量化:不需要太多资源,适合在个人电脑上运行。
Ollama支持的平台包括Mac、Linux和Windows,并提供了Docker镜像。对于Mac和Windows用户,可以直接下载安装包进行安装。Linux用户则可以通过一键安装命令进行安装。
使用Ollama后,用户可以在本地机器上轻松构建和管理LLMs,访问和运行一系列预构建的模型,或者导入和定制自己的模型,无需关注复杂的底层实现细节。这为希望在本地环境中探索和开发基于LLM的应用的开发者提供了便利。
Phi2
Phi-2是微软发布的一款小型语言模型,它拥有27亿参数,相比于其他大型语言模型(LLM)如GPT-3的1750亿参数,Phi-2的参数更少,训练更快。尽管规模较小,Phi-2在多个基准测试中展现出了卓越的性能,这些测试评估了模型在推理、语言理解、数学、编码和常识能力方面的表现。
Phi-2是基于Transformer架构的,它在处理NLP和编码领域的综合合成数据集和Web数据集时,共训练了1.4T个令牌。该模型在96个A100 GPU上训练了14天。值得注意的是,Phi-2没有经过基于人类反馈的增强学习(RLHF)的校准,也没有进行指导性的微调。在评估中,Phi-2在复杂的多步推理任务中优于规模大25倍的模型,甚至在某些测试中超过了Google最近发布的Gemini Nano 2的性能。
Phi-2的训练数据包括专门用于教授模型常识推理和通识知识的合成数据集,以及经过精心挑选和过滤的Web数据。这些数据的选择侧重于教育价值和内容质量,以提高模型的性能和安全性。
Phi-2的局限性包括生成不准确的代码和事实、对指令的不可靠响应、语言限制,以及潜在的社会偏见。因此,尽管Phi-2可用于各种研究,如可解释性、安全性改进或微调实验,但在使用时需要保持谨慎和批判性思维。Phi-2只能用于研究目的,不支持商业用途。
安装Ollama
下载ollama
安装后打开ollama
终端中使用命令操作即可
部署llama2
ollama run llama2
部署Phi2
ollama run phi:2.7b-chat-v2-fp16
ollama常用命令
以下是一些Ollama常用命令:
-
ollama run <model_name>
:运行指定名称的模型。例如,ollama run llama2
会启动Llama 2模型。 -
ollama list
:列出所有可用的模型。 -
ollama show <model_name>
:显示指定模型的详细信息。 -
ollama create <model_name>
:从一个Modelfile创建一个新模型。 -
ollama pull <model_name>
:从模型注册表中拉取指定模型。 -
ollama push <model_name>
:将指定模型推送到模型注册表。 -
ollama cp <source_model> <destination_model>
:复制一个模型到另一个模型。 -
ollama rm <model_name>
:删除指定模型。
其他本地部署LLM方法
- Hugging Face and Transformers
- LangChain
- Llama.cpp
- Llamafile
- GPT4ALL
API调用脚本
使用python调用api,方便实现各种功能的AI化,比如linux错误日志询问等等。
#!/usr/bin/python3
#coding: utf-8
from ollama import Client
import time
def stream_chat(prompt: str, model_name: str = "deepseek-r1:7b"):
"""
Ollama流式聊天接口调用
:param prompt: 用户输入的对话内容
:param model_name: 使用的模型名称(默认中文版llama3)
"""
try:
# 创建消息列表(支持多轮对话扩展)
messages = [
{"role": "user", "content": prompt}
]
# 发起流式请求
client = Client(host='http://10.1.1.1:11434')
stream = client.chat(
model=model_name,
messages=messages,
stream=True, # 启用流式传输
options={
"temperature": 0.7, # 控制生成随机性(0-1)
"num_ctx": 2048 # 上下文窗口大小
}
)
# 处理流式响应
full_response = ""
print("AI正在生成:", end="", flush=True)
for chunk in stream:
# 提取内容并实时输出
content = chunk.get('message', {}).get('content', '')
if content:
print(content, end="", flush=True)
full_response += content
time.sleep(0.02) # 控制输出节奏
return full_response
except Exception as e:
print(f"\n接口调用失败: {str(e)}")
return None
if __name__ == "__main__":
# 示例调用
while True:
user_input = input("Enter a prompt: ")
if user_input:
response = stream_chat(user_input)
print(f"\n完整响应:\n{response}")
print('\n\n')
else:
print("\n请输入有效的提示信息.")