O `OssMapDataset` é ideal para cenários com pequenos volumes de dados e memória suficiente que exigem acesso aleatório frequente e processamento paralelo. Este tópico descreve como construir um dataset usando o `OssMapDataset`.
Pré-requisitos
OSS Connector for AI/ML está instalado e configurado. Para mais informações, consulte Instalar o OSS Connector for AI/ML e Configurar o OSS Connector for AI/ML.
Construa um dataset
Métodos
Você pode construir um dataset com `OssMapDataset` de três formas:
Prefixo OSS_URI: Adequado para cenários em que os caminhos de armazenamento no OSS seguem um padrão uniforme.
Lista de OSS_URIs: Indicada para casos em que os caminhos de armazenamento no OSS são específicos, mas dispersos.
Arquivo de manifesto: Reduz a sobrecarga das operações de `list object` do OSS. Este método é apropriado para datasets com muitos arquivos, como dezenas de milhões, carregados repetidamente e para buckets onde o recurso de recuperação escalar do OSS está ativado.
Construa um dataset a partir de um prefixo OSS_URI
Este exemplo demonstra como usar o método `from_prefix` do `OssMapDataset` para criar um dataset a partir de um prefixo (OSS_URI) especificado no OSS.
from osstorchconnector import OssMapDataset
ENDPOINT = "http://oss-cn-beijing-internal.aliyuncs.com"
REGION = "cn-beijing"
CONFIG_PATH = "/etc/oss-connector/config.json"
CRED_PATH = "/root/.alibabacloud/credentials"
OSS_URI = "oss://ai-testset/EnglistImg/Img/BadImag/Bmp/Sample001/"
# Build a dataset using the from_prefix method of OssMapDataset.
map_dataset = OssMapDataset.from_prefix(oss_uri=OSS_URI, endpoint=ENDPOINT, cred_path=CRED_PATH, config_path=CONFIG_PATH, region=REGION)
# Randomly access an object in the created dataset.
item = map_dataset[0]
print(item.key)
print(item.size)
content = item.read()
print(len(content))
item.close()
# Traverse the objects in the dataset.
for item in map_dataset:
print(item.key)
print(item.size)
content = item.read()
print(len(content))
item.close()Construa um dataset a partir de uma lista de OSS_URIs
Este exemplo mostra como usar o método `from_objects` do `OssMapDataset` para criar um dataset a partir de uma lista especificada de OSS_URIs.
from osstorchconnector import OssMapDataset
ENDPOINT = "http://oss-cn-beijing-internal.aliyuncs.com"
REGION = "cn-beijing"
CONFIG_PATH = "/etc/oss-connector/config.json"
CRED_PATH = "/root/.alibabacloud/credentials"
# uris is a string iterator that contains multiple OSS_URIs.
uris = [
"oss://ai-testset/EnglistImg/Img/BadImag/Bmp/Sample001/img001-00001.png",
"oss://ai-testset/EnglistImg/Img/BadImag/Bmp/Sample001/img001-00002.png",
"oss://ai-testset/EnglistImg/Img/BadImag/Bmp/Sample001/img001-00003.png"
]
# Build a dataset using the from_objects method of OssMapDataset.
map_dataset = OssMapDataset.from_objects(object_uris=uris, endpoint=ENDPOINT, cred_path=CRED_PATH, config_path=CONFIG_PATH, region=REGION)
# Randomly access an object in the created dataset.
item = map_dataset[1]
print(item.key)
print(item.size)
content = item.read()
print(len(content))
item.close()
# Traverse the objects in the dataset.
for item in map_dataset:
print(item.key)
print(item.size)
content = item.read()
print(len(content))
item.close()