计算化学和凝聚态物理的机器学习工具
cmlkit的Python项目详细描述
cmlkit
“骆驼工具包”
_______________
cmlkit
为计算化学和凝聚态物理的机器学习模型,特别是原子论预测的机器学习模型的指定、调整和评估提供了一种简洁明了的方法。
警告:
cmlkit
依赖于^{} ,这是尚未公开的。- 这是一个“科学准则”,即发展很少发生,而且有点偶然。我会尽量不做太多突破性的改变,永远不要在小版本。
- 这是一个非常特定于领域的项目,所以它有点充满了行话。但是,
tune
和engine
子模块非常通用!
如果你在任何科学工作中使用此代码,请在出版物中提及并告知我。谢谢!
什么是cmlkit
?_;
在其核心,cmlkit
定义了一个统一的基于dict
的格式来指定模型组件,这些组件可以直接读写为yaml
。它使用这种格式为其域中流行方法的实现提供接口。模型组件被实现为纯粹的ish函数,这在概念上是令人满意的,并为轻松的管道和缓存打开了大门。
在此基础上,它实现了并行超参数优化(使用hyperopt
作为后端),并提供工具来训练模型、进行预测和评估这些预测。它的目的是扩展性和灵活性足以满足研究的需要。它还具有“高性能计算兼容性”,即它可以直接在90年代的计算环境中运行。
出于必要性,它还实现了另一种数据集格式,但通过提供自动加载来弥补这一点,这是很好的。
兼容性
目前,有以下接口:
表示:
- 多体张量表示(mbtr)(hou,rupp,arxiv 1704.06439(2017))(
qmmlpack
接口) - 原子位置的平滑重叠(soap)表示(bartok,kondor,csanyi,prb 87 184115(2013))(
quippy
接口) - 对称函数(SF)表示(Behler,JCP 134074106(2011))(^{
}接口)
回归方法:
- 在^{
} 中实现的内核岭回归(krr)
功能
- 相当干净、可组合、现代的代码库,几乎没有魔力
超参数优化(cmlkit.tune
)自夸:
- 强大的多核支持(即它可以自动终止超时的外部代码,即使它忽略了
SIGTERM
) - 不需要
mongodb
(对于某些计算环境courk很重要courk) - 扩展到
hyperopt
空间(log
网格) - 实现多步骤优化的可能性(目前处于试验阶段)
- 可恢复/可恢复运行由可读的、原子式编写的优化历史(由^{
} 支持) - 搜索空间可以完全用文本定义,即它们易于编写、携带和序列化
在路线图上,即将推出™:
- 彻底缓存计算(一切都准备好了!)
- 插件系统(目前,自定义对象需要手动注册)
常见问题
(实际上并不经常问这些问题。)
我不从事计算化学/凝聚态物理。我应该在乎吗?
很遗憾,简短的回答可能是否定的。
不过,我认为这个图书馆的建筑相当整洁,所以也许它可以提供一些稍微有趣的阅读。tune
组件非常通用,在我看来,它为hyperopt
提供了一个非常干净的接口。engine
也相当通用,提供了一种序列化specify的好方法。ic类型的python对象到yaml
。
我为什么要用这个?
如果您需要使用上面提到的任何库,可能会更方便。如果您需要进行超参数优化,并且厌倦了简单的hyperopt
,那么它可能很有用。