在 Google Colab 的免费实例上运行大型语言模型(LLM)已成为可能,这为技术探索提供了低成本路径。本文将演示如何利用 llama.cpp 和 LangChain 框架,在 Colab 环境中部署并测试 LLaMA-2 13B 模型,涵盖从基础加载到复杂代理应用的全流程。
llama.cpp 集成
llama.cpp 是一个基于纯 C/C++ 编写的开源项目,无需外部依赖即可在任何硬件上运行(支持 CUDA、OpenCL 等)。它允许我们使用 GGUF 格式的量化模型,显著降低资源占用,非常适合在有限的云资源上进行推理。
首先需要在 Python 环境中安装相关库。为了启用 GPU 加速,安装时需指定 CMAKE_ARGS:
!CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip3 install llama-cpp-python
!pip3 install huggingface-hub
!pip3 install sentence-transformers langchain langchain-experimental
!huggingface-cli download TheBloke/Llama-2-7b-Chat-GGUF llama-2-7b-chat.Q4_K_M.gguf --local-dir=/content --local-dir-use-symlinks False
这里使用了 huggingface-hub 自动下载量化后的 GGUF 模型文件。对于初次测试,7B 模型已足够验证流程,且对资源要求较低(约 1.6GB RAM 和 4.2GB VRAM)。若需更高精度,可替换下载命令中的 URL 指向 13B 版本,Colab 免费实例通常也能承载。
加载模型时,通过 CallbackManager 配置流式输出,体验更接近 ChatGPT 的效果:
from langchain.llms import LlamaCpp
from langchain.callbacks.manager import CallbackManager
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
n_gpu_layers = 40
n_batch = 512
callback_manager = CallbackManager([StreamingStdOutCallbackHandler()])
llm = LlamaCpp(
model_path="/content/llama-2-7b-chat.Q4_K_M.gguf",
temperature=0.1,
n_gpu_layers=n_gpu_layers,
n_batch=n_batch,
callback_manager=callback_manager,
verbose=True,
)
调用 llm("What is the distance to the Moon?") 即可看到平滑输出的回答。
LangChain 实战
LangChain 是构建 LLM 应用的强大框架。虽然官方示例多针对付费 API,但结合本地模型同样能发挥其链式编排的优势。
1. 基础链式调用 (LCEL)
利用 LangChain 表达式语言(LCEL),我们可以将提示模板绑定到模型:
from langchain.prompts import PromptTemplate
langchain.schema.output_parser StrOutputParser
template =
prompt = PromptTemplate(template=template, input_variables=[])
chain = prompt | llm | StrOutputParser()
result = chain.invoke({: })

