全部产品
Search
文档中心

Container Service for Kubernetes:Praktik Terbaik untuk Pemisahan Baca/Tulis OSS

更新时间:Aug 14, 2025

Layanan Penyimpanan Objek (OSS) mendukung berbagai klien dengan tingkat dukungan operasi penulisan yang berbeda-beda. Dukungan penuh untuk penulisan dapat memengaruhi kinerja pembacaan. Oleh karena itu, pemisahan baca/tulis dapat meminimalkan dampak operasi penulisan terhadap kinerja pembacaan serta meningkatkan akses data secara signifikan dalam skenario intensif membaca. Topik ini menjelaskan cara mengimplementasikan pemisahan baca/tulis menggunakan klien volume OSS yang berbeda atau alat seperti OSS SDK dan ossutil dalam skenario intensif membaca.

Prasyarat

  • Bucket OSS telah dibuat. Bucket tersebut dimiliki oleh Akun Alibaba Cloud yang sama dengan kluster Anda.

  • Sebuah Bucket OSS telah dibuat. Bucket tersebut milik Akun Alibaba Cloud yang sama dengan kluster Anda.

    Penting

    Kami menyarankan agar Anda tidak menggunakan Bucket OSS lintas akun.

Skenario

OSS umumnya digunakan dalam skenario hanya-baca dan baca/tulis. Untuk skenario intensif membaca, kami sarankan Anda memisahkan operasi baca dan tulis pada data OSS:

  • Baca: Pilih klien volume OSS yang berbeda atau modifikasi parameter konfigurasi untuk mengoptimalkan kecepatan pembacaan data.

  • Tulis: Gunakan ossfs 1.0 untuk mengimplementasikan kemampuan penulisan penuh atau gunakan alat seperti OSS SDK untuk menulis data.

Skenario hanya-baca

  • Dalam skenario inferensi big data, analisis, dan kueri, kami sarankan Anda mengatur mode akses volume OSS ke ReadOnlyMany untuk memastikan bahwa data tidak dihapus atau dimodifikasi secara tidak sengaja.

  • Volume OSS saat ini mendukung tiga jenis klien: ossfs 1.0, ossfs 2.0, dan strmvol. Semuanya mendukung operasi hanya-baca.

    • Kami sarankan Anda memperbarui plug-in CSI ke versi 1.33.1 atau lebih baru dan menggunakan ossfs 2.0 sebagai pengganti ossfs 1.0 untuk mengoptimalkan kinerja dalam skenario hanya-baca. Untuk informasi tentang cara menggunakan volume ossfs 2.0, lihat Gunakan Volume ossfs 2.0.

    • Jika bisnis Anda melibatkan pembacaan file kecil dalam jumlah besar, seperti pembacaan dataset, backtesting kuantisasi, dan analisis log deret waktu, Anda dapat menggunakan volume strmvol. Untuk informasi tentang cara menggunakan volume strmvol, lihat Gunakan Volume strmvol.

    Untuk informasi lebih lanjut tentang skenario klien dan rekomendasi pemilihan, lihat Referensi Pemilihan Klien.

  • Jika bisnis Anda memerlukan penggunaan klien ossfs 1.0 dalam skenario hanya-baca, Anda dapat merujuk pada konfigurasi parameter berikut untuk meningkatkan kinerja pembacaan data.

    Parameter

    Deskripsi

    kernel_cache

    Menggunakan cache kernel untuk mempercepat operasi pembacaan. Fitur ini cocok untuk skenario di mana Anda tidak perlu mengakses data terbaru secara real-time.

    Ketika ossfs perlu membaca file berkali-kali dan kueri mengenai cache, memori idle dalam cache kernel digunakan untuk menyimpan file untuk mempercepat pengambilan data.

    parallel_count

    Menentukan jumlah maksimum bagian yang dapat diunduh atau diunggah secara bersamaan selama pengunduhan atau pengunggahan multipart. Nilai default: 20.

    max_multireq

    Menentukan jumlah maksimum kueri yang dapat mengambil metadata file secara bersamaan. Nilai parameter ini harus lebih besar dari atau sama dengan nilai parameter parallel_count. Nilai default: 20.

    max_stat_cache_size

    Menentukan jumlah maksimum file yang metadata-nya dapat disimpan dalam cache metadata. Nilai default: 1000. Untuk menonaktifkan cache metadata, atur parameter ini ke 0.

    Dalam skenario di mana Anda tidak perlu mengakses data terbaru secara real-time, ketika direktori saat ini berisi sejumlah besar file, Anda dapat meningkatkan jumlah cache untuk mempercepat operasi LIST.

    direct_read

    ossfs versi 1.91 dan yang lebih baru menambahkan mode baca langsung untuk skenario hanya-baca.

Skenario baca/tulis

  • Dalam skenario baca/tulis, Anda harus mengatur mode akses volume OSS ke ReadWriteMany.

  • Saat ini, ossfs 1.0 mendukung operasi penulisan penuh, sedangkan ossfs 2.0 hanya mendukung penulisan tambahan berurutan. Saat Anda melakukan operasi penulisan melalui ossfs, perhatikan hal-hal berikut:

    • ossfs tidak menjamin konsistensi data yang ditulis oleh operasi penulisan bersamaan.

    • Ketika volume OSS dipasang ke pod, jika Anda masuk ke pod atau host pod dan menghapus atau memodifikasi file di jalur yang dipasang, file sumber di Bucket OSS juga akan dihapus atau dimodifikasi. Untuk menghindari penghapusan data penting secara tidak sengaja, Anda dapat mengaktifkan kontrol versi untuk Bucket OSS. Untuk informasi lebih lanjut, lihat Versioning.

  • Dalam skenario intensif membaca, terutama ketika jalur baca dan tulis dipisahkan, seperti dalam proses pelatihan bisnis big data, kami sarankan Anda memisahkan operasi baca dan tulis pada data OSS. Atur mode akses volume OSS ke ReadOnlyMany, optimalkan kecepatan pembacaan data dengan mengonfigurasi parameter cache, dan tulis data melalui alat seperti SDK. Untuk informasi lebih lanjut, lihat Contoh.

Contoh

Dalam contoh ini, aplikasi pelatihan pengenalan gambar coretan tangan digunakan untuk menggambarkan cara mengonfigurasi pemisahan baca/tulis OSS. Contoh ini adalah model pembelajaran mendalam sederhana. Aplikasi membaca set data pelatihan dari direktori /data-dir Bucket OSS melalui volume OSS hanya-baca dan menulis checkpoint ke direktori /log-dir Bucket OSS melalui volume OSS baca/tulis atau OSS SDK.

Sebelum Anda mulai, unduh set data pelatihan gambar tulisan tangan MNIST dan unggah ke direktori /tf-train/train/data/ di Bucket OSS Anda. Ini memungkinkan aplikasi Anda mengakses set data.

Implementasikan operasi baca/tulis menggunakan ossfs

Karena penulisan checkpoint adalah operasi penulisan tambahan berurutan, Anda dapat memilih ossfs 1.0 atau ossfs 2.0 untuk mengimplementasikan operasi baca/tulis.

  1. Terapkan aplikasi pelatihan pengenalan gambar coretan tangan berdasarkan templat berikut.

    Aplikasi ditulis dalam Python dan volume OSS yang diberikan secara statis dipasang ke aplikasi. Untuk informasi tentang cara mengonfigurasi volume OSS, lihat Pasang Volume ossfs 1.0 yang Diberikan Secara Statis atau Gunakan Volume ossfs 2.0.

    Dalam contoh berikut, subdirektori /tf-train Bucket OSS dipasang ke direktori /mnt pod.

    1. Buat volume ossfs 1.0 berdasarkan konten berikut:

      cat << EOF | kubectl apply -f -
      apiVersion: v1
      kind: Secret
      metadata:
        name: oss-secret
        namespace: default
      stringData:
        akId: "<your-accesskey-id>"
        akSecret: "<your-accesskey-secret>"
      ---
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: tf-train-pv
        labels:
          alicloud-pvname: tf-train-pv
      spec:
        capacity:
          storage: 10Gi
        accessModes:
          - ReadWriteMany
        persistentVolumeReclaimPolicy: Retain
        csi:
          driver: ossplugin.csi.alibabacloud.com
          volumeHandle: tf-train-pv
          nodePublishSecretRef:
            name: oss-secret
            namespace: default
          volumeAttributes:
            bucket: "<your-bucket-name>"
            url: "oss-<region>.aliyuncs.com"
            otherOpts: "-o max_stat_cache_size=0 -o allow_other"
            path: "/tf-train"
      ---
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: tf-train-pvc
      spec:
        accessModes:
        - ReadWriteMany
        resources:
          requests:
            storage: 10Gi
        selector:
          matchLabels:
            alicloud-pvname: tf-train-pv
      EOF
    2. Buat wadah pelatihan berdasarkan konten berikut.

      Selama proses pelatihan, aplikasi menulis file antara ke direktori /mnt/training_logs di dalam pod. Direktori ini dikelola oleh ossfs, yang secara otomatis mengunggah file baru ke direktori /tf-train/training_logs/ di Bucket OSS Anda.

      cat << EOF | kubectl apply -f -
      apiVersion: v1
      kind: Pod
      metadata:
        labels:
          app: tfjob
        name: tf-mnist
        namespace: default
      spec:
        containers:
        - command:
          - sh
          - -c
          - python /app/main.py
          env:
          - name: NVIDIA_VISIBLE_DEVICES
            value: void
          - name: gpus
            value: "0"
          - name: workers
            value: "1"
          - name: TEST_TMPDIR
            value: "/mnt"
          image: registry.cn-beijing.aliyuncs.com/tool-sys/tf-train-demo:rw
          imagePullPolicy: Always
          name: tensorflow
          ports:
          - containerPort: 20000
            name: tfjob-port
            protocol: TCP
          volumeMounts:
            - name: train
              mountPath: "/mnt"
          workingDir: /root
        priority: 0
        restartPolicy: Never
        securityContext: {}
        terminationGracePeriodSeconds: 30
        volumes:
        - name: train
          persistentVolumeClaim:
            claimName: tf-train-pvc
      EOF
  2. Verifikasi bahwa data dapat dibaca dan ditulis sesuai harapan.

    1. Periksa status pod.

      kubectl get pod tf-mnist

      Tunggu beberapa menit hingga status pod berubah dari Running menjadi Completed. Output yang diharapkan:

      NAME       READY   STATUS      RESTARTS   AGE
      tf-mnist   0/1     Completed   0          2m12s
    2. Periksa log operasional pod.

      Periksa waktu pemuatan data dalam log operasional pod. Waktu pemuatan mencakup jumlah waktu yang diperlukan untuk mengunduh file dari OSS dan memuat file ke TensorFlow.

      kubectl logs tf-mnist | grep dataload

      Sistem menampilkan informasi serupa dengan output berikut. Waktu kueri aktual tergantung pada performa instans dan status jaringan.

      dataload cost time:  1.54191803932
    3. Masuk ke Konsol OSS. Anda dapat menemukan bahwa file terkait diunggah ke direktori /tf-train/training_logs Bucket OSS. Ini menunjukkan bahwa data dapat dibaca dan ditulis dari OSS sesuai harapan.image.png

Optimalkan kecepatan pembacaan data ossfs melalui pemisahan baca/tulis

  1. Konfigurasikan ulang aplikasi untuk mengimplementasikan pemisahan baca/tulis.

    • Baca: Gunakan volume ossfs 1.0 hanya-baca yang dioptimalkan untuk operasi pembacaan.

    • Tulis: Gunakan volume ossfs 1.0 baca/tulis atau OSS SDK untuk operasi penulisan.

    Gunakan volume ossfs 1.0 baca/tulis untuk operasi penulisan

    Aplikasi pelatihan pengenalan gambar coretan tangan dan volume ossfs 1.0 hanya-baca + baca/tulis digunakan sebagai contoh untuk menggambarkan cara mengonfigurasi ulang aplikasi untuk mendukung pemisahan baca/tulis.

    1. Buat volume ossfs 1.0 hanya-baca berdasarkan konten berikut.

      Optimalkan parameter konfigurasi volume ossfs 1.0 untuk skenario hanya-baca.

      • Ubah accessModes baik PV maupun PVC menjadi ReadOnlyMany. Jalur pemasangan bucket dapat dikurangi menjadi /tf-train/train/data.

      • Dalam bidang otherOpts, tambahkan opsi -o kernel_cache -o max_stat_cache_size=10000 -o umask=022:

        • Opsi kernel_cache mempercepat pembacaan data ossfs dengan menggunakan buffer memori sistem.

        • Opsi max_stat_cache_size meningkatkan cache metadata (nilai 10.000 mengonsumsi sekitar 40 MB memori; sesuaikan sesuai ukuran instans Anda).

        • Opsi umask=022 memberikan izin baca ke proses non-root dalam kontainer.

        Untuk informasi lebih lanjut, lihat Skenario.

      cat << EOF | kubectl apply -f -
      apiVersion: v1
      kind: Secret
      metadata:
        name: oss-secret
        namespace: default
      stringData:
        akId: "<your-accesskey-id>"
        akSecret: "<your-accesskey-secret>"
      ---
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: tf-train-pv
        labels:
          alicloud-pvname: tf-train-pv
      spec:
        capacity:
          storage: 10Gi
        accessModes:
          - ReadOnlyMany
        persistentVolumeReclaimPolicy: Retain
        csi:
          driver: ossplugin.csi.alibabacloud.com
          volumeHandle: tf-train-pv
          nodePublishSecretRef:
            name: oss-secret
            namespace: default
          volumeAttributes:
            bucket: "<your-bucket-name>"
            url: "oss-<region>.aliyuncs.com"
            otherOpts: "-o kernel_cache -o max_stat_cache_size=10000 -o umask=022 -o allow_other"
            path: "/tf-train/train/data"
      ---
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: tf-train-pvc
      spec:
        accessModes:
        - ReadOnlyMany
        resources:
          requests:
            storage: 10Gi
        selector:
          matchLabels:
            alicloud-pvname: tf-train-pv
      EOF
    2. Buat volume ossfs 1.0 baca/tulis berdasarkan konten berikut:

      cat << EOF | kubectl apply -f -
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: tf-logging-pv
        labels:
          alicloud-pvname: tf-logging-pv
      spec:
        capacity:
          storage: 10Gi
        accessModes:
          - ReadWriteMany
        persistentVolumeReclaimPolicy: Retain
        csi:
          driver: ossplugin.csi.alibabacloud.com
          volumeHandle: tf-logging-pv
          nodePublishSecretRef:
            name: oss-secret
            namespace: default
          volumeAttributes:
            bucket: "<your-bucket-name>"
            url: "oss-<region>.aliyuncs.com"
            otherOpts: "-o max_stat_cache_size=0 -o allow_other"
            path: "/tf-train/training_logs"
      ---
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: tf-logging-pvc
      spec:
        accessModes:
        - ReadWriteMany
        resources:
          requests:
            storage: 10Gi
        selector:
          matchLabels:
            alicloud-pvname: tf-logging-pv
      EOF
    3. Buat wadah pelatihan berdasarkan konten berikut:

      Catatan

      Logika bisnis pelatihan tidak memerlukan modifikasi apa pun. Anda hanya perlu memasang volume hanya-baca dan baca/tulis saat menerapkan.

      cat << EOF | kubectl apply -f -
      apiVersion: v1
      kind: Pod
      metadata:
        labels:
          app: tfjob
        name: tf-mnist
        namespace: default
      spec:
        containers:
        - command:
          - sh
          - -c
          - python /app/main.py
          env:
          - name: NVIDIA_VISIBLE_DEVICES
            value: void
          - name: gpus
            value: "0"
          - name: workers
            value: "1"
          - name: TEST_TMPDIR
            value: "/mnt"
          image: registry.cn-beijing.aliyuncs.com/tool-sys/tf-train-demo:rw
          imagePullPolicy: Always
          name: tensorflow
          ports:
          - containerPort: 20000
            name: tfjob-port
            protocol: TCP
          volumeMounts:
            - name: train
              mountPath: "/mnt/train/data"
            - name: logging
              mountPath: "/mnt/training_logs"
          workingDir: /root
        priority: 0
        restartPolicy: Never
        securityContext: {}
        terminationGracePeriodSeconds: 30
        volumes:
        - name: train
          persistentVolumeClaim:
            claimName: tf-train-pvc
        - name: logging
          persistentVolumeClaim:
            claimName: tf-logging-pvc
      EOF

    Gunakan OSS SDK untuk operasi penulisan

    Dalam contoh ini, aplikasi pelatihan pengenalan gambar coretan tangan dan OSS SDK digunakan untuk menggambarkan cara mengonfigurasi ulang aplikasi untuk mendukung pemisahan baca/tulis.

    1. Instal OSS SDK dalam lingkungan Container Service for Kubernetes (ACK). Tambahkan konten berikut saat Anda membuat gambar. Untuk informasi lebih lanjut, lihat Instalasi.

      RUN pip install oss2
    2. Modifikasi kode sumber berdasarkan Demo Python SDK.

      Blok kode berikut menunjukkan kode sumber terkait gambar dasar saat aplikasi pelatihan pengenalan gambar coretan tangan yang disebutkan sebelumnya digunakan:

      def train():
          ...
      	saver = tf.train.Saver(max_to_keep=0)
          
          for i in range(FLAGS.max_steps):
              if i % 10 == 0:  # Record summaries and test-set accuracy
                  summary, acc = sess.run([merged, accuracy], feed_dict=feed_dict(False))
                  print('Accuracy at step %s: %s' % (i, acc))
                  if i % 100 == 0:
                      print('Save checkpoint at step %s: %s' % (i, acc))
                      saver.save(sess, FLAGS.log_dir + '/model.ckpt', global_step=i)

      Dalam kode sebelumnya, setiap 100 iterasi, file antara (checkpoint) disimpan di direktori log_dir yang ditentukan, yaitu direktori /mnt/training_logs pod. Karena parameter max_to_keep Saver adalah 0, semua file antara dipertahankan. Setelah 1.000 iterasi, 10 set checkpoint disimpan di OSS.

      Modifikasi kode berdasarkan persyaratan berikut untuk menggunakan OSS SDK mengunggah checkpoint.

      1. Konfigurasikan kredensial untuk membaca pasangan AccessKey dan informasi bucket dari variabel lingkungan. Untuk informasi lebih lanjut, lihat Konfigurasikan Kredensial Akses (Python SDK V1).

      2. Untuk mengurangi penggunaan memori kontainer, Anda dapat mengatur max_to_keep ke 1, yang berarti hanya set terbaru dari file antara pelatihan yang selalu disimpan. Setiap kali file antara disimpan, mereka diunggah ke direktori bucket yang sesuai menggunakan fungsi put_object_from_file.

      Catatan

      Saat Anda menggunakan OSS SDK dalam skenario pemisahan baca/tulis, Anda dapat menggunakan pembacaan dan penulisan asinkron untuk mempercepat pelatihan.

      import oss2
      from oss2.credentials import EnvironmentVariableCredentialsProvider
      
      auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
      url = os.getenv('URL','<default-url>')
      bucketname = os.getenv('BUCKET','<default-bucket-name>')
      bucket = oss2.Bucket(auth, url, bucketname)
      
      ...
      def train():
        ...
        saver = tf.train.Saver(max_to_keep=1)
      
       for i in range(FLAGS.max_steps):
          if i % 10 == 0:  # Record summaries and test-set accuracy
            summary, acc = sess.run([merged, accuracy], feed_dict=feed_dict(False))
            print('Accuracy at step %s: %s' % (i, acc))
            if i % 100 == 0:
              print('Save checkpoint at step %s: %s' % (i, acc))
              saver.save(sess, FLAGS.log_dir + '/model.ckpt', global_step=i)
              # FLAGS.log_dir = os.path.join(os.getenv('TEST_TMPDIR', '/mnt'),'training_logs')
              for path,_,file_list in os.walk(FLAGS.log_dir) :  
                for file_name in file_list:  
                  bucket.put_object_from_file(os.path.join('tf-train/training_logs', file_name), os.path.join(path, file_name))

      Gambar kontainer yang dimodifikasi adalah registry.cn-beijing.aliyuncs.com/tool-sys/tf-train-demo:ro.

    3. Modifikasi templat aplikasi untuk mengharuskan aplikasi mengakses OSS dalam mode hanya-baca.

      1. Ubah accessModes baik PV maupun PVC menjadi ReadOnlyMany. Jalur pemasangan bucket dapat dikurangi menjadi /tf-train/train/data.

      2. Dalam bidang otherOpts, tambahkan opsi -o kernel_cache -o max_stat_cache_size=10000 -o umask=022:

        • Opsi kernel_cache mempercepat pembacaan data ossfs dengan menggunakan buffer memori sistem.

        • Opsi max_stat_cache_size meningkatkan cache metadata (nilai 10.000 mengonsumsi sekitar 40 MB memori; sesuaikan berdasarkan ukuran instans Anda).

        • Opsi umask=022 memberikan izin baca kepada proses non-root dalam kontainer.

        Untuk informasi lebih lanjut, lihat Skenario.

      3. Tambahkan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET ke templat pod. Anda dapat memperoleh nilai variabel lingkungan dari oss-secret. Pastikan informasinya sama dengan volume OSS.

    Lihat File YAML yang Dimodifikasi untuk Aplikasi Pelatihan Pengenalan Gambar Coretan Tangan

    cat << EOF | kubectl apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: oss-secret
      namespace: default
    stringData:
      akId: "<your-accesskey-id>"
      akSecret: "<your-accesskey-secret>"
    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: tf-train-pv
      labels:
        alicloud-pvname: tf-train-pv
    spec:
      capacity:
        storage: 10Gi
      accessModes:
        - ReadOnlyMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        volumeHandle: tf-train-pv
        nodePublishSecretRef:
          name: oss-secret
          namespace: default
        volumeAttributes:
          bucket: "<your-bucket-name>"
          url: "oss-<region>.aliyuncs.com"
          otherOpts: "-o kernel_cache -o max_stat_cache_size=10000 -o umask=022 -o allow_other"
          path: "/tf-train/train/data"
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: tf-train-pvc
    spec:
      accessModes:
      - ReadOnlyMany
      resources:
        requests:
          storage: 10Gi
      selector:
        matchLabels:
          alicloud-pvname: tf-train-pv
    ---
    apiVersion: v1
    kind: Pod
    metadata:
      labels:
        app: tfjob
      name: tf-mnist
      namespace: default
    spec:
      containers:
      - command:
        - sh
        - -c
        - python /app/main.py
        env:
        - name: NVIDIA_VISIBLE_DEVICES
          value: void
        - name: gpus
          value: "0"
        - name: workers
          value: "1"
        - name: TEST_TMPDIR
          value: "/mnt"
        - name: OSS_ACCESS_KEY_ID      #Tentukan ID AccessKey yang digunakan untuk mengakses PV.
          valueFrom:
            secretKeyRef:
              name: oss-secret
              key: akId
        - name: OSS_ACCESS_KEY_SECRET  #Tentukan rahasia AccessKey yang digunakan untuk mengakses PV.
          valueFrom:
            secretKeyRef:
              name: oss-secret 
              key: akSecret
        - name: URL                    #Abaikan jika URL default dikonfigurasi.
          value: "https://oss-<region>.aliyuncs.com"
        - name: BUCKET                 #Abaikan jika bucket default dikonfigurasi.
          value: "<bucket-name>"
        image: registry.cn-beijing.aliyuncs.com/tool-sys/tf-train-demo:ro
        imagePullPolicy: Always
        name: tensorflow
        ports:
        - containerPort: 20000
          name: tfjob-port
          protocol: TCP
        volumeMounts:
          - name: train
            mountPath: "/mnt/train/data"
        workingDir: /root
      priority: 0
      restartPolicy: Never
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
      - name: train
        persistentVolumeClaim:
          claimName: tf-train-pvc
    EOF
  2. Verifikasi bahwa data dapat dibaca dan ditulis sesuai harapan.

    1. Periksa status pod.

      kubectl get pod tf-mnist

      Tunggu beberapa menit hingga status pod berubah dari Running menjadi Completed. Output yang diharapkan:

      NAME       READY   STATUS      RESTARTS   AGE
      tf-mnist   0/1     Completed   0          2m25s
    2. Periksa log operasional pod.

      Periksa waktu pemuatan data dalam log operasional pod. Waktu pemuatan mencakup jumlah waktu yang diperlukan untuk mengunduh file dari OSS dan memuat file ke TensorFlow.

      kubectl logs tf-mnist | grep dataload

      Output yang diharapkan:

      dataload cost time:  0.843528985977

      Output tersebut menunjukkan bahwa cache digunakan untuk mempercepat operasi pembacaan dalam mode hanya-baca. Metode ini ideal untuk pelatihan skala besar atau skenario pemuatan data terus-menerus.

    3. Masuk ke Konsol OSS. Anda dapat menemukan bahwa file terkait ditampilkan di direktori /tf-train/training_logs Bucket OSS. Ini menunjukkan bahwa data dapat dibaca dan ditulis dari OSS sesuai harapan.image.png

Referensi

Referensi OSS SDK

Berikut adalah beberapa kode referensi untuk SDK resmi Alibaba Cloud OSS:

Untuk informasi lebih lanjut tentang bahasa yang didukung, seperti PHP, Node.js, Browser.js, .NET, Android, iOS, dan Ruby, lihat Referensi SDK.

Alat lain untuk mengimplementasikan pemisahan baca/tulis OSS

Alat

Referensi

Konsol OSS

Mulai menggunakan Konsol OSS

OpenAPI

PutObject

ossutil

Unggah objek

ossbrowser

Operasi umum