第二章:环境搭建与依赖安装

说实话,做量化回测最怕什么?不是策略亏钱,而是环境装到一半报错,心态直接崩了。我早期踩过这个坑,所以这一章咱们把环境搭得稳稳当当的。

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 知识体系总览

下面这张图把本章的核心逻辑串起来了。你可以看到,虚拟环境是地基,四个核心库是支柱,验证脚本是质检员。

环境搭建知识体系 Python虚拟环境 (conda/venv) transformers 模型加载与推理 bitsandbytes 4-bit/8-bit量化 vLLM 高性能推理引擎 backtrader 回测框架 验证脚本:版本检查 + 模型加载测试 ✅ 环境就绪,可以开始回测

我的经验:环境搭建这件事,一次配好,后面能省90%的调试时间。别嫌麻烦,每一步都验证一下。我曾经图省事跳过了验证步骤,结果回测跑了三天才发现模型根本没加载成功——全是随机预测。

好了,环境搭好了,下一章咱们就开始真正干活了——用LLM做量化策略的信号生成。不过在那之前,建议你把上面的验证脚本跑一遍,确保所有库都能正常工作。

专注资料整理