使用Aim记录工件
实验跟踪的一个关键方面是能够将某些文件/工件与训练运行元数据关联起来。这类工件的例子包括模型检查点、训练运行配置文件等。
从3.19版本开始,Aim提供了记录工件的API接口,以及展示工件元数据的用户界面。
Artifacts日志记录SDK
使用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_ID和AWS_SECRET_ACCESS_KEY环境变量。关于如何为boto3进行配置的更多详细信息可查看此处。
如果您需要直接控制boto3客户端处理s3连接的方式,可以使用aim.storage.artifacts.s3_storage.S3ArtifactStorage_clientconfig(...)。S3ArtifactStorage_clientconfig接受boto3.client支持的所有关键字参数,会覆盖其他boto3配置方式。这允许设置凭据和连接细节,例如endpoint_url和botocore的Config参数。
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工件存储。但在选择此方法时,应考虑解决方案的性能。