Todos os produtos
Search
Central de documentação

Platform For AI:Read and write data in OSS

Última atualização: Jun 27, 2026

Use o SDK do OSS para Python ou a API do OSS para Python para ler e gravar dados do Object Storage Service (OSS) no DSW.

Recomendações

Para acesso frequente a grandes volumes de dados, registre o OSS como um conjunto de dados e monte-o. Para acessos eventuais ou dependentes de lógica, use os métodos de SDK e API descritos neste tópico.

Uso do SDK do OSS para Python

O DSW inclui o pacote Python oss2. Para ler e gravar dados no OSS:

  1. Autentique-se e inicialize o cliente.

    import oss2
    auth = oss2.Auth('<your_AccessKey_ID>', '<your_AccessKey_Secret>')
    bucket = oss2.Bucket(auth, '<your_oss_endpoint>', '<your_bucket_name>')

    Substitua os seguintes espaços reservados.

    Parâmetro

    Descrição

    <your_AccessKey_ID> e <your_AccessKey_Secret>

    O AccessKey ID e o AccessKey secret da sua conta Alibaba Cloud. Para mais informações, consulte Criar um AccessKey.

    <your_oss_endpoint>

    O endpoint do OSS. Selecione o endpoint correspondente à região da sua instância:

    • Instâncias de pagamento conforme o uso na região China (Pequim): oss-cn-beijing.aliyuncs.com

    • Instâncias de assinatura na região China (Pequim): oss-cn-beijing-internal.aliyuncs.com

    • Instâncias GPU P100 ou CPU na região China (Xangai): oss-cn-shanghai.aliyuncs.com

    • Instâncias GPU M40 na região China (Xangai): oss-cn-shanghai-internal.aliyuncs.com

    Regiões e endpoints do OSS.

    <your_bucket_name>

    Nome do bucket, sem o prefixo oss://.

  2. Leia e grave dados no OSS.

    # Read a complete file.
    result = bucket.get_object('<your_file_path/your_file>')
    print(result.read())
    # Read data by range.
    result = bucket.get_object('<your_file_path/your_file>', byte_range=(0, 99))
    # Write data to OSS.
    bucket.put_object('<your_file_path/your_file>', '<your_object_content>')
    # Append data to a file.
    result = bucket.append_object('<your_file_path/your_file>', 0, '<your_object_content>')
    result = bucket.append_object('<your_file_path/your_file>', result.next_position, '<your_object_content>')

    Substitua estes espaços reservados:

    • <your_file_path/your_file>: Caminho do arquivo a ser lido ou gravado.

    • <your_object_content>: Conteúdo a ser gravado ou anexado.

Uso da API do OSS para Python

O DSW fornece a API do OSS para Python, permitindo que usuários do PyTorch leiam e gravem dados no OSS diretamente.

Armazene dados de treinamento ou modelos no OSS:

  • Carregar dados de treinamento

    Armazene os dados em um bucket do OSS com um arquivo de índice que mapeia caminhos para rótulos. Crie um Dataset personalizado para usar a API DataLoader do PyTorch e habilitar leituras paralelas multiprocesso. Exemplo:

    import io
    import oss2
    import PIL
    import torch
    class OSSDataset(torch.utils.data.dataset.Dataset):
        def __init__(self, endpoint, bucket, auth, index_file):
            self._bucket = oss2.Bucket(auth, endpoint, bucket)
            self._indices = self._bucket.get_object(index_file).read().split(',')
        def __len__(self):
            return len(self._indices)
        def __getitem__(self, index):
            img_path, label = self._indices(index).strip().split(':')
            img_str = self._bucket.get_object(img_path)
            img_buf = io.BytesIO()
            img_buf.write(img_str.read())
            img_buf.seek(0)
            img = Image.open(img_buf).convert('RGB')
            img_buf.close()
            return img, label
    dataset = OSSDataset(endpoint, bucket, auth, index_file)
    data_loader = torch.utils.data.DataLoader(
        dataset,
        batch_size=batch_size,
        num_workers=num_loaders,
        pin_memory=True)

    Substitua os seguintes espaços reservados:

    • endpoint: Endpoint do OSS.

    • bucket: Nome do bucket.

    • auth: Objeto de autenticação.

    • index_file: Caminho para o arquivo de índice.

    Nota

    Formato do arquivo de índice: vírgulas (,) separam as amostras e dois pontos (:) separam o caminho do rótulo.

  • Salvar ou carregar um modelo

    Salve ou carregue um modelo PyTorch usando a API Python oss2. Tutorial de serialização do PyTorch.

    • Salvar um modelo

      from io import BytesIO
      import torch
      import oss2
      # Specify the Bucket name.
      bucket_name = "<your_bucket_name>"
      bucket = oss2.Bucket(auth, endpoint, bucket_name)
      buffer = BytesIO()
      torch.save(model.state_dict(), buffer)
      bucket.put_object("<your_model_path>", buffer.getvalue())

      Substitua os seguintes espaços reservados:

      • auth: Objeto de autenticação.

      • endpoint: Endpoint do OSS.

      • <your_bucket_name>: Nome do bucket do OSS, sem o prefixo oss://.

      • <your_model_path>: Caminho de destino do modelo no bucket.

    • Carregar um modelo

      from io import BytesIO
      import torch
      import oss2
      bucket_name = "<your_bucket_name>"
      bucket = oss2.Bucket(auth, endpoint, bucket_name)
      buffer = BytesIO(bucket.get_object("<your_model_path>").read())
      model.load_state_dict(torch.load(buffer))

      Substitua os seguintes espaços reservados:

      • auth: Objeto de autenticação.

      • endpoint: Endpoint do OSS.

      • <your_bucket_name>: Nome do bucket do OSS, sem o prefixo oss://.

      • <your_model_path>: Caminho do modelo no bucket.