Efisiensi pemuatan data secara langsung memengaruhi kecepatan pelatihan model. Tolok ukur berikut membandingkan throughput tiga metode akses dataset—OssIterableDataset, OssMapDataset, dan ossfs dengan ImageFolder—baik melalui titik akhir internal maupun Akselerator OSS. Gunakan hasil ini untuk memilih metode akses dan konfigurasi titik akhir yang paling sesuai dengan beban kerja pelatihan Anda.
Pilih jenis dataset
| Jenis dataset | Pola akses | Paling cocok untuk |
|---|---|---|
| OssIterableDataset | Streaming sekuensial | Sebagian besar beban kerja pelatihan — melakukan iterasi melalui seluruh dataset secara berurutan |
| OssMapDataset | Akses acak berdasarkan indeks | Beban kerja yang memerlukan pengacakan berdasarkan indeks atau pengambilan sampel non-sekuensial |
| ossfs dengan ImageFolder | Sistem file POSIX melalui FUSE | Pipeline yang memerlukan API sistem file dan dapat mentoleransi throughput yang lebih rendah |
Deskripsi pengujian
Skenario pengujian: Membaca objek dataset melalui titik akhir internal dan titik akhir terakselerasi.
Data pengujian: Sekitar 1 TB berisi 10.000.000 gambar dengan ukuran rata-rata 100 KB per gambar.
Lingkungan pengujian: Satu instans Elastic Compute Service (ECS) general-purpose g7nex peningkatan jaringan dengan 128 vCPU, memori 512 GB, dan bandwidth internal 160 Gbit/s.
Pembuatan dataset:
OssIterableDataset dan OssMapDataset dibuat menggunakan OSS Connector for AI/ML.
ossfs dengan ImageFolder dibuat menggunakan ossfs.
Pengujian kinerja
Parameter pengujian
Semua pengujian menggunakan pengaturan dataloader berikut:
| Parameter | Nilai | Deskripsi |
|---|---|---|
| ukuran batch dataloader | 256 | Setiap batch memproses 256 sampel |
| pekerja dataloader | 32 | Data dimuat secara paralel melalui 32 proses |
Pipeline transform menerapkan pra-pemrosesan pada setiap gambar:
trans = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
def transform(object):
img = Image.open(io.BytesIO(object.read())).convert('RGB')
val = trans(img)
return val, object.labelHasil pengujian
| Dataset dibuat oleh | Jenis dataset | Titik akhir internal | Akselerator OSS |
|---|---|---|---|
| OSS Connector for AI/ML | OssIterableDataset | 4.582 img/s | 4.744 img/s |
| OSS Connector for AI/ML | OssMapDataset | 4.010 img/s | 4.370 img/s |
| ossfs | ossfs dengan ImageFolder | 56 img/s | 251 img/s |
Pengujian kinerja optimal
Pengujian ini mengukur throughput baca mentah tanpa pra-pemrosesan gambar, sehingga mengisolasi kinerja I/O dari masing-masing metode akses.
Parameter pengujian
Pengaturan dataloader sama seperti di atas. Fungsi transform melewati decoding gambar dan mengembalikan byte objek mentah:
def transform(object):
data = object.read()
return object.key, object.labelHasil pengujian
| Dataset dibuat oleh | Jenis dataset | Titik akhir internal | Akselerator OSS |
|---|---|---|---|
| OSS Connector for AI/ML | OssIterableDataset | 99.920 img/s | 123.043 img/s |
| OSS Connector for AI/ML | OssMapDataset | 56.564 img/s | 78.264 img/s |
Analisia data kinerja
Tolok ukur menunjukkan tiga temuan utama:
Sekitar 80 kali lebih cepat tanpa Akselerator OSS: OssIterableDataset dan OssMapDataset jauh melampaui ossfs dengan ImageFolder ketika keduanya tidak menggunakan akselerator.
Sekitar 18 kali lebih cepat dengan Akselerator OSS: Selisihnya menyempit ketika keduanya menggunakan Akselerator OSS, tetapi dataset OSS Connector tetap unggul dengan margin yang lebar.
Keuntungan tambahan sekitar 1,6 kali dari Akselerator OSS: Mengaktifkan Akselerator OSS bersama OSS Connector for AI/ML memberikan peningkatan throughput lebih lanjut dibandingkan yang dicapai hanya dengan titik akhir internal.
Perbedaan throughput tersebut berasal dari cara masing-masing metode membaca objek. ossfs menerjemahkan panggilan sistem file POSIX menjadi permintaan API OSS individual, sehingga setiap gambar memerlukan satu round-trip jaringan tersendiri. Sebaliknya, OssIterableDataset dan OssMapDataset membaca objek dalam bentuk aliran, sehingga biaya overhead per permintaan didistribusikan ke batch besar dan mampu mempertahankan konkurensi tinggi pada bandwidth 160 Gbit/s dari instans pengujian.
Kesimpulan
Untuk sebagian besar beban kerja pelatihan model, gunakan OSS Connector for AI/ML dengan OssIterableDataset melalui titik akhir internal. Kombinasi ini memberikan throughput tinggi tanpa memerlukan konfigurasi tambahan. Untuk meningkatkan throughput lebih jauh, aktifkan Akselerator OSS bersama OSS Connector for AI/ML—keduanya bekerja secara sinergis dan menghasilkan kinerja tertinggi dalam pengujian ini.