全部产品
Search
文档中心

Platform For AI:Baca data dari dan tulis data ke Object Storage Service (OSS)

更新时间:Nov 08, 2025

Topik ini menjelaskan cara menggunakan OSS Python SDK dan OSS Python API untuk membaca serta menulis data di OSS.

Rekomendasi

Untuk mengakses dan memproses set data besar secara sering, daftarkan OSS sebagai set data dan pasang. Untuk akses sementara atau yang bergantung pada logika bisnis Anda, gunakan metode SDK dan API yang dijelaskan dalam topik ini.

Gunakan OSS Python SDK

DSW mencakup paket Python oss2. Ikuti langkah-langkah berikut untuk membaca dan menulis data di OSS.

  1. Autentikasi dan Inisialisasi.

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

    Ganti placeholder berikut dengan nilai sebenarnya Anda:

    Parameter

    Deskripsi

    <your_AccessKey_ID> dan <your_AccessKey_Secret>

    ID AccessKey dan Rahasia AccessKey untuk akun Alibaba Cloud Anda. Untuk informasi lebih lanjut, lihat Buat Pasangan Kunci Akses.

    <your_oss_endpoint>

    Titik akhir dari instans OSS. Pilih titik akhir yang sesuai dengan wilayah instans Anda:

    • Instans bayar sesuai pemakaian di Wilayah China (Beijing): oss-cn-beijing.aliyuncs.com

    • Instans langganan di wilayah China (Beijing): oss-cn-beijing-internal.aliyuncs.com

    • Instans GPU P100 atau CPU di wilayah China (Shanghai): oss-cn-shanghai.aliyuncs.com

    • Instans GPU M40 di wilayah China (Shanghai): oss-cn-shanghai-internal.aliyuncs.com

    Untuk informasi lebih lanjut, lihat Wilayah dan titik akhir OSS.

    <your_bucket_name>

    Nama bucket. Jangan sertakan awalan oss://.

  2. Membaca Data dari dan Menulis Data ke OSS.

    # Baca file lengkap.
    result = bucket.get_object('<your_file_path/your_file>')
    print(result.read())
    # Baca data berdasarkan rentang.
    result = bucket.get_object('<your_file_path/your_file>', byte_range=(0, 99))
    # Tulis data ke OSS.
    bucket.put_object('<your_file_path/your_file>', '<your_object_content>')
    # Tambahkan data ke 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>')

    Ganti placeholder berikut dengan nilai sebenarnya Anda:

    • <your_file_path/your_file>: Jalur ke file yang ingin dibaca atau ditulis.

    • <your_object_content>: Konten yang ingin ditulis atau ditambahkan.

Gunakan OSS Python API

Untuk pengguna PyTorch, DSW menyediakan OSS Python API untuk membaca dan menulis data langsung di OSS.

Anda dapat menyimpan data pelatihan atau model di OSS:

  • Memuat Data Pelatihan

    Simpan data Anda di Bucket OSS dan simpan jalur data serta label yang sesuai dalam file indeks di Bucket yang sama. Dengan membuat kustom Dataset, Anda dapat menggunakan API DataLoader di PyTorch untuk membaca data secara paralel di beberapa proses. Contoh kode berikut memberikan ilustrasi.

    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)

    Ganti placeholder berikut dengan nilai sebenarnya Anda:

    • endpoint: Titik akhir OSS.

    • bucket: Nama Bucket.

    • auth: Objek Autentikasi.

    • index_file: Jalur ke file indeks.

    Catatan

    Dalam contoh ini, file indeks menggunakan format ini: koma (,) memisahkan sampel, dan titik dua (:) memisahkan jalur sampel dari labelnya.

  • Simpan atau Muat Model

    Anda dapat menggunakan API Python oss2 untuk menyimpan atau memuat model PyTorch. Untuk informasi lebih lanjut tentang menyimpan dan memuat model di PyTorch, lihat PyTorch.

    • Menyimpan Model

      from io import BytesIO
      import torch
      import oss2
      # Tentukan nama Bucket.
      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())

      Ganti placeholder berikut dengan nilai sebenarnya Anda:

      • auth: Objek Autentikasi.

      • endpoint: Titik akhir OSS.

      • <your_bucket_name>: Nama Bucket OSS, tanpa awalan oss://.

      • <your_model_path>: Jalur tujuan untuk model di dalam bucket.

    • Memuat Model

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

      Ganti placeholder berikut dengan nilai sebenarnya Anda:

      • auth: Objek Autentikasi.

      • endpoint: Titik akhir OSS.

      • <your_bucket_name>: Nama Bucket OSS, tanpa awalan oss://.

      • <your_model_path>: Jalur model untuk dimuat dari bucket.