Skip to main content

存储

ClearML 能够与市场上最流行的存储解决方案进行接口,用于存储模型检查点、工件和图表。

支持的存储介质包括:

支持的存储

要使用ClearML的云存储,请安装适用于您的云存储类型的clearml包,然后配置您的存储凭证。

note

一旦将对象上传到存储介质,使用该对象的每台机器都必须能够访问它。

安装

对于云存储,请为您的云存储类型安装ClearML包:

  • AWS S3 - pip install clearml[s3]
  • Azure - pip install clearml[azure]
  • Google Storage - pip install clearml[gs]

配置存储

存储配置通过编辑clearml.conf来完成。

ClearML 配置文件使用 HOCON 格式,该格式支持运行时环境变量访问。

配置 AWS S3

修改clearml.conf中的sdk.aws.s3部分,以添加S3存储桶的密钥、密钥和区域。

您还可以在sdk.aws.s3.credentials部分中授予对特定S3存储桶的访问权限。在sdk.aws.s3部分中提供的默认配置将应用于没有特定存储桶配置的任何存储桶。

您还可以启用使用凭证链来让Boto3选择正确的凭证。这包括从环境变量、凭证文件和配置了IAM角色的元数据服务中选择凭证。有关更多详细信息,请参阅Boto3文档

您可以在上传文件时指定额外的ExtraArgs传递给Boto3。您可以基于每个存储桶设置此参数。

sdk {
aws {
s3 {
# S3 credentials, used for read/write access by various SDK elements

# default, used for any bucket not specified below
key: ""
secret: ""
region: ""
use_credentials_chain: false
extra_args: {}

credentials: [
# specifies key/secret credentials to use when handling s3 urls (read or write)
{
bucket: "my-bucket-name"
key: ""
secret: ""
use_credentials_chain: false
},

]
}
boto3 {
pool_connections: 512
max_multipart_concurrency: 16
}
}
}

AWS S3 访问参数可以通过引用标准环境变量来指定,如果它们已经被定义。

例如:

sdk {
aws {
s3 {
# default, used for any bucket not specified below
key: ${AWS_ACCESS_KEY_ID}
secret: ${AWS_SECRET_ACCESS_KEY}
region: ${AWS_DEFAULT_REGION}
}
}
}

非AWS端点

ClearML 支持任何与 S3 兼容的服务,例如 MinIO 以及其他基于云或本地部署的存储服务。对于非 AWS 端点,请使用如下配置:

sdk {
aws {
s3 {
# default, used for any bucket not specified below
key: ""
secret: ""
region: ""

credentials: [
{
# This will apply to all buckets in this host (unless key/value is specifically provided for a given bucket)
host: "my-minio-host:9000"
key: ""
secret: ""
multipart: false
secure: false
verify: true # OR "/path/to/ca/bundle.crt" OR "https://url/of/ca/bundle.crt" OR false to not verify
}
]
}
}
}

要强制使用非AWS端点,端口声明总是需要的(例如host: "my-minio-host:9000"), 即使是像HTTPS的标准端口433(例如host: "my-minio-host:433")。

要启用TLS,请传递secure: true。例如:

sdk {
aws {
s3 {
key: ""
secret: ""
region: ""

credentials: [
{
host: "my-minio-host:9000"
key: ""
secret: ""
multipart: false
secure: true
verify: true
}
]
}
}
}

使用 sdk.aws.s3.credentials.verify 配置选项来控制 SSL 证书验证:

  • 默认情况下,verify设置为true,意味着证书验证已启用
  • 您可以提供路径或URL到CA捆绑包以进行自定义证书验证

配置 Azure

要配置Azure blob存储,请指定账户名称和密钥。

sdk {
azure.storage {
containers: [
{
account_name: ""
account_key: ""
# container_name:
}
]
}
}

如果已经定义了标准环境变量,可以通过引用它们来指定Azure的存储访问参数。

例如:

sdk {
azure.storage {
containers: [
{
account_name: ${AZURE_STORAGE_ACCOUNT}
account_key: ${AZURE_STORAGE_KEY}
# container_name:
}
]
}
}

配置Google存储

要配置Google存储,请指定项目和凭据JSON文件的路径。

也可以在google.storage.credentials部分为特定存储桶指定凭据。在google.storage部分提供的默认配置将应用于没有特定存储桶配置的任何存储桶。

sdk {
google.storage {
# Default project and credentials file
# Will be used when no bucket configuration is found
project: "clearml"
credentials_json: "/path/to/credentials.json"

# Specific credentials per bucket and sub directory
credentials = [
{
bucket: ""
subdir: "path/in/bucket" # Not required
project: ""
credentials_json: "/path/to/credentials.json"
},
]
}
}

如果已经定义了标准环境变量,可以通过引用它们来指定GCP存储访问参数。

sdk {
google.storage {
credentials = [
{
bucket: ""
subdir: "path/in/bucket" # Not required
project: ""
credentials_json: ${GOOGLE_APPLICATION_CREDENTIALS}
},
]
}
}
Direct Decoding

从v1.13.2版本开始,clearml支持直接从credentials_json参数解码JSON。如果ClearML无法将凭据作为文件加载,它将尝试直接解码JSON。

存储管理器

ClearML 提供了 StorageManager 类来直接从代码中管理内容的下载、上传和缓存。

参见 StorageManager 示例.

路径替换

ClearML StorageManager 在获取文件时支持本地路径替换。

这在管理数据时特别有用,尤其是使用clearml-data时!如果不同的数据消费者将数据物理存储在不同的位置,路径替换允许将数据注册到clearml-data一次,然后在多个位置存储和访问它。

要启用路径替换,请修改 clearml.conf 文件并配置:

sdk {
storage {
path_substitution = [
# Replace registered links with local prefixes,
# Solve mapping issues, and allow for external resource caching.
# {
# registered_prefix = "s3://bucket/research"
# local_prefix = "file:///mnt/shared/bucket/research
# },
# {
# registered_prefix = "file:///mnt/shared/folder/"
# local_prefix = "file:///home/user/shared/folder"
# }
]
}
}

缓存

ClearML 还管理所有下载内容的缓存,因此不会重复下载,代码也不需要两次下载相同的内容!

通过修改clearml.conf文件来配置缓存位置:

sdk {
storage {
cache {
# Defaults to <system_temp_folder>/clearml_cache
default_base_dir: "~/.clearml/cache"
}

direct_access: [
# Objects matching are considered to be available for direct access, i.e. they will not be downloaded
# or cached, and any download request will return a direct reference.
# Objects are specified in glob format, available for url and content_type.
{ url: "file://*" } # file-urls are always directly referenced
]
}
}

直接访问

默认情况下,所有工件(模型/工件/数据集)在使用前都会自动下载到缓存中。

某些存储介质(NFS / 本地存储)允许直接访问,这意味着代码可以直接处理原始存储的对象,而不需要先下载到缓存中。

要启用直接访问,请指定直接访问的URL。