第二章:环境搭建与依赖安装
说实话,做量化回测最怕什么?不是策略亏钱,而是环境装到一半报错,心态直接崩了。我早期踩过这个坑,所以这一章咱们把环境搭得稳稳当当的。
2.1 Python虚拟环境:给你的项目一个“隔离区”
为什么非要搞虚拟环境?你想想看,不同项目依赖的库版本可能打架。比如项目A要transformers 4.30,项目B要4.28,装在一起就乱套了。
我个人习惯用 conda 来管理环境,尤其是做LLM相关开发时,conda对CUDA版本的控制更友好。当然,venv 也完全够用。
创建虚拟环境(二选一)
# 方式一:使用 conda(推荐)
conda create -n llm_quant python=3.10
conda activate llm_quant
# 方式二:使用 venv
python -m venv llm_quant_env
source llm_quant_env/bin/activate # Linux/Mac
# llm_quant_env\Scripts\activate # Windows
我的小建议:Python版本选3.10或3.11。3.12虽然新,但有些库还没完全适配。我在项目中遇到过3.12装bitsandbytes报错的情况,后来老老实实退回3.10。
2.2 核心库安装:一个一个来,别急
下面这四个库是咱们这套框架的“四梁八柱”。我按安装顺序讲,因为有些库之间有依赖关系。
2.2.1 transformers —— LLM的“通用接口”
这个库让加载各种大模型变得像喝水一样简单。不管是LLaMA、ChatGLM还是Qwen,一行代码就能搞定。
pip install transformers
嗯,这里要注意:如果你要用最新的模型,建议装 nightly 版或者指定 commit。我曾经因为版本滞后,折腾了半天才发现是transformers不支持某个新模型结构。
2.2.2 bitsandbytes —— 量化推理的“加速器”
这个库是咱们做量化的核心。它能把模型从FP16压到4-bit或8-bit,显存占用直接砍半。
# Linux 安装(直接)
pip install bitsandbytes
# Windows 用户注意
# 需要从源码编译,或者用大佬编译好的whl包
# 我建议直接用WSL2,省心很多
避坑指南:我曾经在Windows上硬刚bitsandbytes,折腾了两天没搞定。后来切到WSL2,十分钟完事。如果你用Windows,真的建议走WSL2路线。
2.2.3 vLLM —— 高性能推理引擎
vLLM 是最近很火的推理框架,支持PagedAttention,吞吐量比原生transformers高好几倍。做回测时,如果要对大量历史数据做推理,vLLM能省不少时间。
pip install vllm
# 如果遇到torch版本冲突
# 先装torch再装vllm
pip install torch==2.1.0
pip install vllm
2.2.4 backtrader —— 回测框架的“老大哥”
backtrader 是Python里最成熟的回测框架之一。虽然它本身不支持LLM,但我们可以通过自定义策略把LLM的预测结果喂进去。
pip install backtrader
# 如果需要画图功能
pip install matplotlib
2.3 验证安装:别光装,得试试能不能跑
装完库之后,我习惯写个简单的验证脚本。这一步很重要,能提前发现版本不兼容的问题。
# test_env.py
import transformers
import bitsandbytes
import vllm
import backtrader
print(f"transformers 版本: {transformers.__version__}")
print(f"bitsandbytes 版本: {bitsandbytes.__version__}")
print(f"vllm 版本: {vllm.__version__}")
print(f"backtrader 版本: {backtrader.__version__}")
# 测试bitsandbytes的4-bit量化
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
import torch
quant_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.float16
)
# 用一个小模型测试
model = AutoModelForCausalLM.from_pretrained(
"facebook/opt-125m",
quantization_config=quant_config,
device_map="auto"
)
print("模型量化加载成功!")
print(f"模型显存占用: {model.get_memory_footprint() / 1024**2:.2f} MB")
预期输出:如果所有库都装对了,你应该能看到版本号,并且模型能成功加载。显存占用应该在几百MB级别(对于125M模型)。
2.4 常见问题与解决方案
我整理了一份“踩坑清单”,都是我在项目中真实遇到过的。
| 问题 | 原因 | 解决方案 |
|---|---|---|
| bitsandbytes 报错 "CUDA not available" | CUDA版本不匹配或没装CUDA | 检查 nvidia-smi,确保CUDA >= 11.0 |
| vLLM 安装时 torch 冲突 | vLLM 对 torch 版本有要求 | 先卸载 torch,再按 vLLM 文档指定版本安装 |
| transformers 加载模型时 OOM | 显存不够 | 用 device_map="auto" 或换更小的模型 |
| backtrader 回测结果异常 | 数据格式不对 | 检查 OHLCV 数据是否包含空值或异常值 |
2.5 知识体系总览
下面这张图把本章的核心逻辑串起来了。你可以看到,虚拟环境是地基,四个核心库是支柱,验证脚本是质检员。
我的经验:环境搭建这件事,一次配好,后面能省90%的调试时间。别嫌麻烦,每一步都验证一下。我曾经图省事跳过了验证步骤,结果回测跑了三天才发现模型根本没加载成功——全是随机预测。
好了,环境搭好了,下一章咱们就开始真正干活了——用LLM做量化策略的信号生成。不过在那之前,建议你把上面的验证脚本跑一遍,确保所有库都能正常工作。