Kronos:如何做多GPU并行的千股批量股票预测

发布时间:2026/9/1 9:24:16
Kronos:如何做多GPU并行的千股批量股票预测 Kronos如何做多GPU并行的千股批量股票预测【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/KronosKronos 是一个开源的金融 K 线基础模型基于 45 个以上交易所数据训练用分词器 自回归 Transformer两段式结构做金融时间序列预测。对需要批量股票预测的场景它提供predict_batch批量接口与多 GPU 并行支持。在参考的 4 卡 A100 环境里千股预测耗时从 12 分 15 秒降到 8 分 23 秒单卡显存峰值下降约 13%。先搞清楚Kronos 的定位与边界Kronos 是 decoder-only 架构的 K 线序列模型。输入一根根 OHLCV K 线输出未来的价格和成交量。它做的事比较聚焦批量 K 线预测一次传入多只标的同时给出价格与成交量两条预测曲线自定义数据微调仓库提供基于 QlibA 股数据管道和纯 CSV 两套微调流程回测验证微调后可跑简单的 top-K 策略回测输出净值曲线。它适合做指数成分股、行业板块的批量筛查或给组合优化、风控模块提供预测信号。它不适合什么也要说清楚模型输出的是原始信号不是可直接交易的 alpha仓库里的 top-K 回测只是演示级别没有计入交易成本、滑点和冲击成本距离生产策略还有距离。它如何做到并行预测机制批量预测的入口是model/kronos.py里的KronosPredictor。核心方法predict_batch接收一组 K 线 DataFrame 列表内部流程分四步逐标的归一化。对每只股票的历史窗口做 z-score减去均值、除以标准差并裁剪到 ±5 倍标准差内。归一化消除量纲让不同价位、不同流动性的股票能放进同一个批次堆叠成批。所有序列拼成一个(B, seq_len, 6)张量B 是批次里的股票数一次前向推理。自回归 Transformerdecoder-only 结构按历史 token 序列逐个预测下一个 K 线 token对整个批次并行生成这正是数据并行data parallel把不同数据切给不同计算单元同时算的批量形态逐标的还原。输出用每只股票各自的均值和标准差反归一化还原回真实价位。值得强调的是第 1 步和第 4 步每只股票的统计量全程独立批内不会互相污染。你看到的显存占用随 B 增长就是因为张量整体变大了。关键参数max_context模型能处理的最大序列长度。Kronos-small / Kronos-base 上限是 512输入更长会被自动截断lookback与pred_len历史窗口与预测步数。仓库示例用lookback400、pred_len120T、top_p采样温度和核采样阈值控制生成路径的随机性sample_count每条序列采样多条路径再取平均大于 1 时给出概率化的预测均值微调侧的batch_size默认每卡 50和backtest_batch_size默认 1000即回测推理一次推 1000 只。多卡扩展方面训练脚本都基于torchrun走 DDPPyTorch 自带的分布式数据并行推理侧则通过把批次切到不同cuda:N设备实现多卡分担。部署与复现从环境到第一个预测结果硬件方面官方参考配置是 4 张 80GB 显存的 A100、24 核以上 CPU、256GB 内存这套配置支撑千股级任务。如果你只想先复现单卡流程24GB 显存跑 Kronos-small 已经够用base 模型建议 40GB 以上。软件要求Ubuntu 20.04 及以上、Python 3.10、PyTorch ≥2.0。装环境。克隆仓库后执行pip install -r requirements.txt依赖全部锁了版本装完即可用加载模型。从 Hugging Face 拉取 tokenizer 与模型权重如Kronos-Tokenizer-base配Kronos-small包一层KronosPredictor并指定devicecuda:0准备数据。DataFrame 需包含timestamps和open、high、low、close四列volume、amount可选缺失会补 0。取最近lookback行作历史再给pred_len个未来时间戳跑批量预测。把多只股票组织成列表传入predict_batch。注意硬约束所有序列的历史长度和pred_len必须一致否则直接报错。返回的是一组 DataFrame顺序与输入一一对应可直接落盘或绘图。示例脚本见examples/prediction_batch_example.py和examples/prediction_example.py可选微调与回测。用自己的数据时走finetune/下的 Qlib 流程qlib_data_preprocess.py切分数据再用torchrun依次训 tokenizer 和 predictor最后qlib_test.py出回测结果。纯 CSV 场景参考finetune_csv/README_CN.md。实测表现数据怎么看下面一组数字来自参考文章中同一台 4 卡机器的优化前后对比供你建立量级预期指标优化前优化后变化解读总 GPU 显存280GB220GB约降 21%批量推理峰值显存回落余量更从容单卡显存峰值78GB68GB约降 13%单卡压力下降不易触发 OOM千股预测耗时12 分 15 秒8 分 23 秒缩短约 32%吞吐提升主要来自批量调度而非架构改动处理速度1.3 只/秒2 只/秒约提升 54%单只耗时下降批量窗口更短两点提醒一是这些数字绑定了具体硬件和股票池换机器、换数据周期都会变二是耗时改善的主要来源是批次参数与数据管道而不是模型本身所以复现时先对齐参数再谈对比。调参与排坑几个工程决策点GPU 数量怎么定。不是越多越好。卡多了单卡负载变薄通信与调度开销反而上来。建议从 2 到 4 张卡起步用同一批股票测耗时和显存找到性价比拐点。多GPU批大小怎么设。批越大显存涨得越快可能 OOM批太小则 GPU 吃不饱。微调侧默认batch_size50每卡批量推理时从一个明显放得下的值起步逐步上调并盯显存水位回测侧可参考backtest_batch_size1000的量级。数据清洗与标准化。predict对价格、成交量列里的 NaN 会直接抛错停牌、缺失、异常值要在进模型前处理干净。另外注意归一化是每只股票、各自历史窗口内做的不要试图自己跨股票统一标准化会破坏逐标的还原。预测精度如何验证。仓库自带两层手段。其一tests/test_kronos_regression.py是固定随机种子的回归测试把输出与存档结果逐值比对覆盖不同上下文长度适合改代码后确认行为没漂移。其二finetune/的微调回测会给出 top-K 策略相对基准的净值曲线用来判断微调是否真的带来信息增益。结果是否可信。把sample_count调到 3 以上看多次采样路径的离散程度波动大说明这段预测置信度低。正式评估务必带上成本项做回测另外注意max_context是硬上限历史窗口超过 512 只会被截断别误以为模型看过了全部历史。收尾Kronos 把一次预测上千只股票从拼硬件变成了调参数批量接口、逐标的归一化、多卡并行三件事各归其位。 盘前批量预测指数成分股给组合构建提供统一信号 行业板块轮动筛选一次跑完全行业️ 风险监测批量识别异常波动标的代码在仓库 Kronosgit clone 用先跑通单只示例再扩到批量。【免费下载链接】KronosKronos: A Foundation Model for the Language of Financial Markets项目地址: https://gitcode.com/GitHub_Trending/kronos14/Kronos创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻