Skip to main content

存储管理器

本页面描述了使用StorageManager类的存储示例。存储示例包括:

note

StorageManager 支持 HTTP(S)、S3、Google Cloud Storage、Azure 和文件系统文件夹。

文件操作

下载文件

要从存储下载一个ZIP文件到global缓存上下文,使用StorageManager.get_local_copy()类方法,并将目标位置指定为remote_url参数:

from clearml import StorageManager

StorageManager.get_local_copy(remote_url="s3://MyBucket/MyFolder/file.zip")
note

Zip 和 tar.gz 文件将自动解压到缓存中。这可以通过 extract_archive 标志来控制。

要将文件下载到缓存中的特定上下文,请将上下文的名称指定为cache_context参数:

StorageManager.get_local_copy(remote_url="s3://MyBucket/MyFolder/file.ext", cache_context="test")

要下载非压缩文件,请将extract_archive参数设置为False

StorageManager.get_local_copy(remote_url="s3://MyBucket/MyFolder/file.ext", extract_archive=False)

默认情况下,StorageManager 每下载5MB就会向控制台报告其下载进度。你可以使用 StorageManager.set_report_download_chunk_size() 类方法来更改此设置,并指定以MB为单位的块大小(Azure和GCP存储不支持)。

StorageManager.set_report_download_chunk_size(chunk_size_mb=10)

上传文件

要将文件上传到存储,请使用StorageManager.upload_file()类方法。指定本地文件的完整路径作为local_file参数,并指定远程URL作为remote_url参数。

StorageManager.upload_file(
local_file="/mnt/data/also_file.ext", remote_url="s3://MyBucket/MyFolder/also_file.ext"
)

使用retries参数设置文件上传失败时应重试的次数。

默认情况下,StorageManager 每上传5MB就会向控制台报告其上传进度。你可以使用 StorageManager.set_report_upload_chunk_size() 类方法来更改此设置,并指定以MB为单位的块大小(Azure和GCP存储不支持)。

StorageManager.set_report_upload_chunk_size(chunk_size_mb=10)

使用文件夹

下载文件夹

使用StorageManager.download_folder()类方法将文件夹下载到本地机器。将远程存储位置指定为remote_url参数,将目标本地位置指定为local_folder参数。

StorageManager.download_folder(remote_url="s3://bucket/", local_folder="/folder/")

此方法递归下载远程文件夹,保持远程存储中的子文件夹结构。

例如:如果你有一个远程文件 s3://bucket/sub/file.ext,那么 StorageManager.download_folder(remote_url="s3://bucket/", local_file="/folder/") 将会创建 /folder/sub/file.ext

您可以输入match_wildcard,以便仅下载与通配符匹配的文件。

上传文件夹

使用StorageManager.upload_folder()类方法将本地文件夹上传到远程存储。指定要上传的本地文件夹作为local_folder参数,并将目标远程位置作为remote_url参数。

StorageManager.upload_folder(local_file="/LocalFolder", remote_url="s3://MyBucket/MyFolder")

此方法将本地文件夹递归上传到远程存储,保持本地存储中的子文件夹结构。

例如:如果你有一个本地文件 /LocalFolder/sub/file.ext,那么 StorageManager.upload_folder(local_file="/LocalFolder", remote_url="s3://MyBucket/MyFolder") 将会创建 s3://bucket/sub/file.ext

使用retries参数设置文件夹中每个文件在上传失败时的重试次数。如果某些文件上传失败,未完成的文件夹将保留在目标位置,其中包含已成功上传的文件。

您可以输入match_wildcard,以便仅上传与通配符匹配的文件。

设置缓存限制

要设置缓存文件数量的限制,请使用StorageManager.set_cache_file_limit()类方法,并将cache_file_limit参数指定为最大文件数。这不会限制缓存大小,只会限制文件数量。

new_cache_limit = StorageManager.set_cache_file_limit(cache_file_limit=100)