SuperAPI AI 工具集

compileiq-run-search

编程与开发

查看项目

更新于 10-16 07:24

技能介绍

用途:在已通过 compileiq-author-objective 得到目标函数、通过 compileiq-search-space 得到搜索空间后,本技能帮助选择 worker、设定配置规模并安全运行搜索,适用于即将实例化 Search(...) 并调用 .start()、搜索收敛过快或过慢、单个配置挂起、以及从单 GPU 扩展到 Ray 集群等场景。

主要能力:worker 选择。可向 Search(worker_type=...) 传入内置 WorkerTypes 枚举值或 worker 类本身,包括 MultiProcessWorker(默认,复用进程池,适合快速无状态目标)、IsoMultiProcessWorker(每个任务新进程,可被父进程在 task_timeout 后杀死,适合可能挂起、OOM 或泄漏 CUDA 上下文的 GPU kernel)、RayWorker(分布式,需自行搭建 Ray 集群并在每个 worker 安装 compileiq,num_workers 与 task_timeout 会被忽略)、AsyncWorker(asyncio,适合异步 def 目标,是并发而非并行)。GPU kernel 编译调优的默认建议是 IsoMultiProcessWorker,task_timeout 取 30 秒(小 kernel)到 180 秒(大型 attention / XLA HLO)。

配置:SearchConfiguration 支持 problem_type(MIN 用于延迟,MAX 用于吞吐)、generations(必填且大于 0)、pool_size(大于 5,省略时自动推导)、cull_size(默认池的 75% 向下取偶)、mutate_rate(默认 0.25)、num_objectives(默认 1,须等于目标返回元组长度)、normalize(默认 False,跨 GPU 运行时设 True)。经验规则:pool_size * generations 小于 50 属于探索而非优化,大于 2000 可能过拟合测量噪声。

用法:Search 构造参数包括 objective_function、search_space、search_config、worker_type、tracker_config、dump_results、cache_folder、disable_progress_bar、exit_on_failure、debug。务必设置 dump_results=Path(...),CSV 每批刷新,崩溃或被杀后仍可恢复。start(num_workers=..., task_timeout=...) 返回 SearchResult,应交给 compileiq-validate-result 处理。tracker 可选 DisabledTrackerConfig(默认)、LoguruTrackerConfig(推荐用于正式调优)、MLflowTrackerConfig(对接 ML Ops)。可用 Search.sample(n) 在不运行搜索的情况下随机采样参数,验证搜索空间可解析、键符合目标预期并手动跑一次目标。

限制与注意:IsoMultiProcessWorker 忘记设置 task_timeout 是搜索长时间挂起的最常见原因;部分主机上 forkserver 首次评估报 EOFError 或 Broken pipe,可设 CIQ_PROCESS_MODE=spawn;num_workers 大于 num_gpus 对快速 CPU 目标可行,但对 kernel 目标会超订 GPU,建议在目标内固定 CUDA_VISIBLE_DEVICES 并令 num_workers = num_gpus;GPU 锁频需 sudo,属主机级操作,不应放进目标函数,无 sudo 的 CI 容器或共享集群可跳过并向验证技能报告更高的 CV%。自测可运行 python scripts/smoke_search.py。