将您自己的LLM集成到EA中(第2部分):环境部署示例·进阶篇
📘

将您自己的LLM集成到EA中(第2部分):环境部署示例·进阶篇

第 2/2 篇

「给 WSL2 挪盘与掐内存」

系统盘吃紧时,把 WSL2 子系统迁到别的盘能省出不少空间。先在命令提示符跑 wsl -l -v --all 看清要搬的发行版名字,再 wsl --shutdown 全关掉,用 wsl --export ubuntu f:\wsl-ubuntu.tar 打成压缩包,然后 wsl --unregister ubuntu 注销原实例,最后 wsl --import new_ubuntu F:\wsl\ubunto_wsl F:\wsl-ubuntu.tar --version 2 导入到新路径。导出的 tar 包留着就是备份,不要也能直接删。 全局配置文件锁在 C:\Users\<UserName>\.wslconfig,动它之前必须确认子系统已 shutdown,否则参数不生效。核心就三行:memory=8GB 给子系统封顶内存,swap=60GB 补磁盘级虚拟内存(0 即不要 swap),swapfile=G:\wsl\swap\wsl-swap.vhdx 指定交换文件落点。末尾不加标点,路径按自己盘符改。 跑 LLM 时有个硬约束:内存加交换的总和得大于模型体积,不然读权重的阶段就会报错。比如 7B 半精度模型常占 4~5GB,配 8GB 内存加 60GB 交换就稳,但只给 4GB 内存零 swap 必崩。 老 Windows 10(1903 以上、内部版 18362.1049+)要手开虚拟机平台:管理员 PowerShell 跑 dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart,装完内核 msi 包再 wsl --set-default-version 2,随后商店装发行版。删了缓存却发现 vhdx 不缩小时,用管理员权限进 diskpart 拿 vdisk 命令压缩虚拟硬盘才真正回收空间。

WSL 命令行参数怎么用才不绕路

在 MT5 之外的分析环境里,很多人用 WSL 跑 Python 或 Linux 工具做行情预处理。wsl.exe 本身不带命令行参数时,会直接进默认 shell;想跳过 shell 直跑程序,用 -e 后接命令最干净,比如 wsl -e python3 strat.py 不会加载交互环境,启动更快。 --cd 控制工作目录,写 ~ 走 Linux 用户主路径,以 / 开头当绝对 Linux 路径,其余必须给绝对 Windows 路径。配合 -d 指定发行版、-u 换用户,能在多发行版机器上精准隔离任务,避免把脚本跑错容器。 管理类参数里,--shutdown 会立刻杀掉所有发行版和 WSL2 轻量虚拟机,释放被占用的内存;--status 直接看子系统状态,排错时先敲这个比盲目重启省事。导入导出用 --export <Distro> <FileName>--import,加 --vhd 可转 .vhdx 格式,方便把整套环境拷到另一台跑 MT5 的 Windows 上复用。 --list -v 能列出全部发行版详细信息,包含版本与运行状态;--set-version <Distro> <Version> 可改指定发行版内核版本,老发行版跑新文件系统工具报错时,这条比重装快。

◍ 在 WSL2 里把 LLM 跑起来的环境搭建

想在 MT5 之外用本地大模型辅助做价格行为分析,WSL2 是最省事的隔离环境。先用 miniconda 管 Python 包:wget 拉下 Miniconda3-latest-Linux-x86_64.sh,chmod 777 提权后执行安装,装完命令行前端多出「(base)」即生效。 代码编辑器不用另装,WSL2 命令行直接敲 code,会自动拉起 vscode 并连上子系统,左下角显示 WSL 字样。用 cd 切到策略代码目录再打 code,编辑器直接定位该文件夹,改 EA 或脚本很顺手。 N 卡加速两条路:Docker 方式跑 curl https://get.docker.com | sh 起服务,再装 nvidia-docker2,用 docker run --gpus all ... 进 CUDA 容器;手动方式下 cuda_12.2.2_535.104.05_linux.run,装完往 ~/.bashrc 塞三行环境变量(见代码块)。没显卡也别急,llama-cpp-python 纯 CPU 推理只是慢,不是不能用。 建个 conda 虚拟环境 conda create -n llm python=3.10,激活后 git lfs 开大文件支持,clone 下 Phind-CodeLlama-34B-v2 这类 gguf 模型。装 llama-cpp-python 时带 CMAKE_ARGS="-DLLAMA_CUBLAS=on" 才能调 GPU。test.py 里 max_tokens=32 跑太阳系问答,返回 usage 显示 total_tokens=42,说明本地推理链路通了。

MQL5 / C++
class="kw">export PATH=/usr/local/cuda-class="num">12.2.class="num">2/bin${PATH:+:${PATH}}
class="kw">export LD_LIBRARY_PATH=/usr/local/cuda-class="num">12.2.class="num">2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
class="kw">export CUDA_HOME=/usr/local/cuda-class="num">12.2.class="num">2${CUDA_HOME:+:${CUDA_HOME}}
{
  "id": "cmpl-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "object": "text_completion",
  "created": class="num">1679561337,
  "model": "./models/7B/llama-model.gguf",
  "choices": [
    {
      "text": "Q: Name the planets in the solar system? A: Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune and Pluto.",
      "index": class="num">0,
      "logprobs": None,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": class="num">14,
    "completion_tokens": class="num">28,
    "total_tokens": class="num">42
  }
}

「下一步选型的落点」

这套 WSL2 加 llama.cpp 的链路已经跑通,最小代码量就能在本地完成一次 LLM 推理,延迟和显存占用都可控。对做算法交易的读者来说,环境本身不是终点,模型能不能贴合 EA 的上下文才是关键。 下一阶段重心会转到模型选型:从一堆可用权重里挑出适合塞进交易逻辑的那个,而不是盲目追参数规模。外汇与贵金属波动受事件驱动明显,本地推理仅降低调用成本,不消除策略失效的高风险。 你现在就可以在 WSL2 里复现一遍推理示例,确认 llama.cpp 在你显卡上的 tokens/s,作为后续选型的基础参照。

常见问题

用 wsl --export 导出 tar 包,注销原发行版后,通过 wsl --import 指定新路径导入即可完成挪盘,避免C盘爆满。
在 %USERPROFILE%/.wslconfig 里设 memory=4GB 等参数,或用 wsl --shutdown 后重启,可掐住内存上限保宿主流畅。
小布可基于你的硬件给出 WSL2 挪盘与限内存的具体命令清单,并辅助诊断环境报错,减少手动试错成本。
轻量验证用 apt 装 python3-venv 配虚拟环境足够;要频繁换 CUDA 版本再用 conda 隔离更稳。
先按延迟和显存选 7B 量化版做意图解析,确认响应达标再考虑更大模型或云端混合部署。