CompilerGym 是用于执行编译器优化任务的高性能、易于使用的强化学习 (Reinforcement Learning, RL) 环境库,用于解决生产环境中的编译器优化问题。
CompilerGym 由 Facebook 的 AI 团队在 OpenAI Gym 之上构建,并最终致力于帮助提高代码编译器的性能。
CompilerGym 让 ML 研究人员能够用他们熟悉的语言和词汇与重要的编译器优化问题进行交互,并为系统开发者提供了一个工具包,以便为 ML 研究展示新的编译器任务。CompilerGym 的目标是成为通过 ML 让编译器速度更快的催化剂,主要特性如下:
- 易用:构建于 Gym 界面之上,可使用 Python 编写代理。使用 CompilerGym,为编译器优化问题构建 ML 模型就像为玩电子游戏构建 ML 模型一样简单
- 工具库齐备:包含真实的程序和编译器,用于提供数百万个训练实例
- 可重复性:为结果的正确性提供验证,并提供共同的基线,以及用于提交结果的排行榜
使用示例
在 Python 中,导入compiler_gym
进行使用:
>>> import compiler_gym # imports the CompilerGym environments
>>> env = compiler_gym.make( # creates a new environment (same as gym.make)
... "llvm-v0", # selects the compiler to use
... , # selects the program to compile
... , # selects the observation space
... , # selects the optimization target
... )
>>> env.reset() # starts a new compilation session
>>> env.render() # prints the IR of the program
>>> env.step(env.action_space.sample()) # applies a random optimization, updates state/reward/actions
>>> env.close()