Tous les produits
Search
Centre de documentation

Platform For AI:Lecture et écriture de données dans OSS

Dernière mise à jour :Aug 26, 2026

Utilisez le SDK Python OSS ou l'API Python OSS pour lire et écrire des données Object Storage Service (OSS) dans DSW.

Recommandations

Pour un accès fréquent à des données volumineuses, enregistrez OSS comme jeu de données et montez-le. Pour un accès ponctuel ou dépendant de la logique métier, utilisez les méthodes SDK et API décrites dans cette rubrique.

Utilisation du SDK Python OSS

DSW inclut le package Python oss2. Pour lire et écrire des données OSS :

  1. Authentifiez-vous et initialisez le client.

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

    Remplacez ces espaces réservés.

    Paramètre

    Description

    <your_AccessKey_ID> et <your_AccessKey_Secret>

    L'AccessKey ID et l'AccessKey secret de votre compte Alibaba Cloud. Pour plus d'informations, consultez Créer une AccessKey.

    <your_oss_endpoint>

    L'endpoint OSS. Sélectionnez l'endpoint correspondant à la région de votre instance :

    • Instances en paiement à l'utilisation dans la région Chine (Pékin) : oss-cn-beijing.aliyuncs.com

    • Instances par abonnement dans la région Chine (Pékin) : oss-cn-beijing-internal.aliyuncs.com

    • Instances GPU P100 ou instances CPU dans la région Chine (Shanghai) : oss-cn-shanghai.aliyuncs.com

    • Instances GPU M40 dans la région Chine (Shanghai) : oss-cn-shanghai-internal.aliyuncs.com

    Régions et endpoints OSS.

    <your_bucket_name>

    Le nom du bucket, sans le préfixe oss://.

  2. Lisez et écrivez des données 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>')

    Remplacez les espaces réservés suivants :

    • <your_file_path/your_file> : chemin du fichier à lire ou à écrire.

    • <your_object_content> : contenu à écrire ou à ajouter.

Utilisation de l'API Python OSS

DSW fournit l'API Python OSS permettant aux utilisateurs de PyTorch de lire et d'écrire directement des données OSS.

Stockez les données d'entraînement ou les modèles dans OSS :

  • Charger les données d'entraînement

    Stockez les données dans un bucket OSS avec un fichier d'index associant les chemins aux libellés. Créez un objet Dataset personnalisé pour exploiter l'API DataLoader de PyTorch et effectuer des lectures parallèles multiprocessus. Exemple :

    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)

    Remplacez ces espaces réservés :

    • endpoint : endpoint OSS.

    • bucket : nom du bucket.

    • auth : objet d'authentification.

    • index_file : chemin du fichier d'index.

    Remarque

    Format du fichier d'index : les virgules (,) séparent les échantillons et les deux-points (:) séparent le chemin du libellé.

  • Enregistrer ou charger un modèle

    Enregistrez ou chargez un modèle PyTorch à l'aide de l'API Python oss2. Tutoriel de sérialisation PyTorch.

    • Enregistrer un modèle

      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())

      Remplacez les espaces réservés suivants :

      • auth : objet d'authentification.

      • endpoint : endpoint OSS.

      • <your_bucket_name> : nom du bucket OSS, sans le préfixe oss://.

      • <your_model_path> : chemin de destination du modèle dans le bucket.

    • Charger un modèle

      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))

      Remplacez les espaces réservés suivants :

      • auth : objet d'authentification.

      • endpoint : endpoint OSS.

      • <your_bucket_name> : nom du bucket OSS, sans le préfixe oss://.

      • <your_model_path> : chemin du modèle dans le bucket.