使用Aim记录工件

实验跟踪的一个关键方面是能够将某些文件/工件与训练运行元数据关联起来。这类工件的例子包括模型检查点、训练运行配置文件等。

从3.19版本开始,Aim提供了记录工件的API接口,以及展示工件元数据的用户界面。

Artifacts日志记录SDK

使用Aim记录工件仅需两个步骤:

  1. 为Aim Run设置工件存储URI: ```python import aim

run = aim.Run()

使用S3作为工件存储

run.set_artifacts_uri('s3://aim/artifacts/')

使用文件系统作为工件存储

run.set_artifacts_uri('file:///home/user/aim/artifacts/')

Aim will create directory with the name of `run.hash` and store all artifacts there.
Note that setting artifacts storage URI is required only once per run.
2.  Log artifact object:
```python
# Log run configuration files as artifacts
run.log_artifact('config.yaml', name='run-config')

一旦记录,工件元数据将显示在Aim UI运行详情页面中:

存储后端

训练产物可能包含大文件,根据使用场景的不同,可能需要不同的存储后端。例如,对于小型实验,使用本地文件系统或网络共享文件系统可能是不错的选择。而对于大型模型,基于云的对象存储(如AWS S3)可能是更优的方案。

当设置好artifacts URI后,Aim会根据URI方案自动检测存储后端。目前支持的artifacts存储后端包括:

  • S3

  • 文件系统

Aim使用boto3 Python包来访问S3资源。默认情况下boto3针对AWS S3资源。连接和凭证验证由boto3处理。例如,提供凭证的典型方法是通过设置AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY环境变量。关于如何为boto3进行配置的更多详细信息可查看此处

如果您需要直接控制boto3客户端处理s3连接的方式,可以使用aim.storage.artifacts.s3_storage.S3ArtifactStorage_clientconfig(...)S3ArtifactStorage_clientconfig接受boto3.client支持的所有关键字参数,会覆盖其他boto3配置方式。这允许设置凭据和连接细节,例如endpoint_urlbotocoreConfig参数。

import aim
from aim.storage.artifacts.s3_storage import S3ArtifactStorage_clientconfig

S3ArtifactStorage_clientconfig(aws_access_key_id=..., aws_secret_access_key=...,
                               endpoint_url=..., config={'retries': {...}, },)
run = aim.Run(...)
run.set_artifacts_uri('s3://...')
run.log_artifact(..., name=...)

Aim提供了使用挂载文件系统作为工件存储的能力。任何提供挂载文件系统接口的存储都可以用作Aim工件存储。但在选择此方法时,应考虑解决方案的性能。