colmena: 高性能计算中的智能可引导管道
项目描述
Colmena
Colmena简化了构建自主应用程序,该程序可引导在超级计算机上运行的大规模模拟活动。
此类“高通量”活动在历史上是由人类确定下一步要运行哪些任务来指导的——这是一个耗时且具有“新数据”与“决策”之间高延迟的过程。
Colmena的创建是为了构建应用,这些应用通过人工智能(AI)增强或取代人类操作。
安装
Colmena可通过PyPI获取:pip install colmena
请参考我们的安装指南以获取更多信息。
使用Colmena
Colmena应用通过两个组件描述计算活动:一个“思考者”选择计算任务,以及一个“执行者”执行这些任务。
“思考者”将如何运行新计算的逻辑编码为“代理”。当将复杂策略分解为简单步骤时,表示变得简单。例如,分布式优化器
from random import random
from colmena.thinker import BaseThinker, result_processor, task_submitter, ResourceCounter
from colmena.queue import PipeQueues
from colmena.models import Result
# Build queues to connect Thinker and Doer
queues = PipeQueues()
class Thinker(BaseThinker):
def __init__(self, queues, num_workers: int, num_guesses=100):
super().__init__(queues, ResourceCounter(num_workers))
self.best_result = None
self.answer = -10 # A (bad) starting guess
self.num_guesses = num_guesses
@task_submitter()
def submit_task(self):
"""Submit a new guess close to the current best whenever a node is free"""
self.queues.send_inputs(self.answer - 1 + 2 * random(), method='simulate')
@result_processor()
def store_result(self, result: Result):
"""Update best guess whenever a simulation finishes"""
assert result.success, result.failure_info
# Update the best result
if self.best_result is None or result.value > self.best_result:
self.answer = result.args[0]
self.best_result = result.value
self.rec.release() # Mark that a node is now free
# Determine if we are done
self.num_guesses -= 1
if self.num_guesses <= 0:
self.done.set()
thinker = Thinker(queues, 8)
“执行者”描述计算类型和可用的计算资源。Colmena提供由多个工作流引擎支持的Task Servers,例如来自ExaWorks项目的引擎。使用Parsl构建时,只需要将您的计算表示为Python函数
from parsl.configs.htex_local import config # Configuration to run locally
from colmena.task_server.parsl import ParslTaskServer
# Define your function
def simulate(x: float) -> float:
return - x ** 2 + 4
# Make the Doer
doer = ParslTaskServer([simulate], queues, config)
一旦这些定义完成,启动应用涉及到启动这两个组件
# Launch the Thinker and doer
doer.start()
thinker.start()
# Wait until it finishes
thinker.join()
queues.send_kill_signal() # Stop the doer
# Done!
print(f'Answer: f({thinker.answer:.2f}) = {thinker.best_result:.2f}')
教程
访问快速入门学习如何构建完整的应用。
更多示例
查看demo_apps
以了解使用Colmena的多种方式。
了解更多
我们的Read-the-Docs提供了关于Colmena的最新信息。
您还可以通过我们关于Colmena发表的文章了解更多信息
- Ward等人。“Colmena:基于机器学习的可扩展集成模拟的高性能计算中的引导”。《2021 IEEE/ACM高性能计算环境中的机器学习研讨会(MLHPC)》[doi] [ArXiv] [幻灯片] [YouTube]
致谢
本项目部分由美国能源部(DOE)的Exascale Computing Project(17-SC-20-SC)和DOE的先进科学研究办公室(ASCR)在合同DE-AC02-06CH11357下支持。
项目详情
下载文件
下载适用于您平台文件的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
colmena-0.7.0.tar.gz (61.1 kB 查看散列)
构建分发
colmena-0.7.0-py3-none-any.whl (70.9 kB 查看散列)
关闭
colmena-0.7.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 1fb9b6e8a2e520b7e133543e3a01baf95cc6602660975477aa660334c0de5327 |
|
MD5 | 88fe497e570ad3b515d35b597f3dd684 |
|
BLAKE2b-256 | 6c9831177b649f99caae75df5552dea85b393b733fc7fee02278ab23057b3d5e |
关闭
colmena-0.7.0-py3-none-any.whl的哈希值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 469342df47dfcd6678a322a6d45df7f8b3956f859dc99ad3eccacd052c646ed3 |
|
MD5 | 97fccb56cae3e17cfffa6098ac854aa5 |
|
BLAKE2b-256 | 6919c3a8397d661cd2d954ad9591eca9f3234758a802d49bcdd8049254a28e36 |