Files
qlib/config.yaml
T
Simon 195f5d41f4 perf(backend): 内存优化三项——全市场研究不再占满 8G
1) 数据装配流式+列裁剪:Repository 新增 stream_range_many_columns(只 SELECT
   所需列、SQL 侧转 REAL、yield_per 分批),引擎按 required_columns 取数
   (LocalEngine 仅 close+因子字段),消除 ORM/Decimal 全量物化;
2) 研究 Job 独立子进程执行(job.mode=subprocess):python -m app.cli.run_job
   在子进程内设 RLIMIT_AS 上限,OOM 归档 failed 而非拖垮 API worker;
   子进程异常退出由父进程补记 failed;并发上限 2;
3) 服务启动清理:残留 queued/running Job 标记 failed(防永久 running)。

实测同款全市场回测:uvicorn worker RSS 稳定 ~220MB,任务峰值内存由 4.1GB+
降至 ~470MB,24s 完成并归档(此前 43s 未完成即 OOM)。
新增/更新测试 96 passed,ruff 干净。
2026-09-06 22:12:44 +08:00

62 lines
2.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ============================================================
# 全局可配置项(可提交,不含任何密钥)
# 约定(见 AGENT.md §2 / §33):
# - 可配置项统一写入本文件(项目根 config.yaml)
# - 密钥统一放根目录 .env(见 .env.example),
# 本文件通过 *_env 字段引用对应环境变量名,不写明文
# ============================================================
app:
name: "qlib-platform"
version: "0.1.0"
debug: false
# 从 .env 读取应用密钥的环境变量名
secret_key_env: "APP_SECRET_KEY"
api:
prefix: "/api"
database:
# 留空 → 默认 sqlite:///./data/quant.db(相对路径自动解析到项目根 data/)
url_env: "DATABASE_URL"
echo: false
# Alembic 迁移脚本目录(相对 backend/)
migrations_dir: "app/infrastructure/persistence/migrations"
data_source:
primary: "tushare"
fallback: "sina"
tushare_token_env: "TUSHARE_TOKEN"
storage:
# 相对项目根目录
raw_dir: "data/raw"
normalized_dir: "data/normalized"
parquet_dir: "data/parquet"
qlib_dir: "data/qlib"
job:
# 研究任务执行模式:
# subprocess —— 独立子进程执行(内存隔离 + RLIMIT 上限,防研究任务 OOM 拖垮 API 服务)
# local —— 本进程内执行(开发 / 单测,无隔离)
# 可用环境变量 JOB_MODE 覆盖(测试强制 local)。
mode: "subprocess"
# subprocess 模式下子进程虚拟地址空间上限(GB);达到上限任务以 MemoryError 失败,不会 OOM 整机
max_memory_gb: 6
# 并发研究子进程上限(超出直接失败并提示稍后再试)
max_concurrent_jobs: 2
agent:
llm:
# 大模型接入:URL 与模型名在此配置(明文、可提交);
# 密钥只放根目录 .env(LLM_API_KEY,见 .env.example)——本文件不写任何 Key。
# 可选:仍可通过 .env 的 LLM_BASE_URL / LLM_MODEL 覆盖下面两个值。
base_url: "https://dashscope.aliyuncs.com/compatible-mode/v1"
model: "qwen-plus"
base_url_env: "LLM_BASE_URL"
model_env: "LLM_MODEL"
api_key_env: "LLM_API_KEY"
logging:
level: "INFO"