Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
Bu özellik Genel Önizleme aşamasındadır.
Makine öğrenmesi ve derin öğrenme iş yükleri için yapay zeka çalışma zamanına eğitim verileri yükleyin. Tüm veri erişimi Unity Kataloğu'ndan geçer: Delta tablolarından tablo verilerini okumak için Spark Connect'i, büyük veri kümeleri ve görüntüler, ses ve metin gibi yapılandırılmamış dosyalar için Unity Kataloğu birimlerini kullanın. Çok dönemli eğitim için verileri daha hızlı erişim için yerel olarak önbelleğe /tmp alın. Spark Python API'siyle verileri yüklemeyi ve dönüştürmeyi öğrenmek için öğreticiye bakın.
Uyarı
Unity Kataloğu gereklidir. AI Çalışma Zamanı'nda tüm veri erişimi Unity Kataloğu'nda yapılır. Tablolarınızın ve birimlerinizin Unity Kataloğu'na kaydedilmesi ve kullanıcı veya hizmet sorumlunuz tarafından erişilebilir olması gerekir.
Tablo verilerini yükleme
Delta tablolarından tablosal makine öğrenmesi verilerini yüklemek için Spark Connect'i kullanın.
Tek düğümlü eğitim için PySpark yönteminitoPandas() kullanarak Apache Spark DataFrames'i pandas DataFrames'e dönüştürebilir ve ardından isteğe bağlı olarak PySpark yönteminito_numpy() kullanarak NumPy biçimine dönüştürebilirsiniz.
Uyarı
Spark Connect, analiz ve ad çözümlemeyi yürütme zamanına erteler, bu da kodunuzun davranışını değiştirebilir. Bkz. Spark Connect ile Spark Klasik'i karşılaştırma.
Spark Connect, Spark SQL, Spark üzerinde Pandas API'si, Yapılandırılmış Akış ve MLlib (DataFrame tabanlı) dahil olmak üzere çoğu PySpark API'sini destekler. Desteklenen en son API'ler için PySpark API başvuru belgelerine bakın.
Diğer sınırlamalar için bkz. Sunucusuz işlem sınırlamaları.
Birimleri kullanarak büyük Delta tablolarını yükleme
ile toPandas()dönüştürülemeyecek kadar büyük olan büyük Delta tabloları için verileri bir Unity Kataloğu birimine aktarın ve PyTorch veya Hugging Face kullanarak doğrudan yükleyin:
# Step 1: Export the Delta table to Parquet files in a UC volume
output_path = "/Volumes/catalog/schema/my_volume/training_data"
spark.table("catalog.schema.my_table").write.mode("overwrite").parquet(output_path)
# Step 2: Load the exported data directly using Hugging Face datasets
from datasets import load_dataset
dataset = load_dataset("parquet", data_files="/Volumes/catalog/schema/my_volume/training_data/*.parquet")
Bu yaklaşım, eğitim sırasında Spark ek yükünü önler ve hem tek GPU hem de dağıtılmış eğitim iş akışları için iyi çalışır.
UCVolumeDataset ile birimlerden yapılandırılmamış verileri yükleyin
Unity Kataloğu birimlerinde depolanan görüntüler, ses ve metin dosyaları gibi yapılandırılmamış veriler için paketinden UCVolumeDataset kullanınserverless_gpu.data.
UCVolumeDataset , birimdeki her dosyayı ilk erişimde hızlı bir yerel önbelleğe kopyalayan ve önbelleğe alınmış yerel dosya yolunu veren bir PyTorch'tır IterableDataset . Aksi takdirde el ile uygulayacağınız performans ve dağıtım sorunlarını ele alır:
- Yerel önbellekleme Dosyalar, ilk erişimde FUSE bağlama noktasından yerel bir önbellek dizinine kopyalanır ve sonraki erişimlerde önbellekten sunulur; bu sayede birden çok epoch süren eğitim sırasında birim yeniden okunmaz.
- Otomatik bölümleme.
torch.distributedbaşlatıldığında, dosyalar rank'ler arasında bölümlenir ve ardındanDataLoaderçalışanı arasında daha da bölünür; böylece her(rank, worker)çifti ek yapılandırma gerekmeden çakışmayan bir dilim alır.
Uyarı
UCVolumeDataset ve serverless_gpu.data.DataLoader, GPU ortamı 5 ve üzerini gerektirir.
UCVolumeDataset ham yerel dosya yollarını verir. Bu dosyaları tensörlere çözümlemek için, yol akışını tüketen ve ayrıştırma mantığınızı uygulayan ikinci bir IterableDataset ile sarın. Bu, G/Ç ve ayrıştırma sorunlarını ayrı tutar.
from serverless_gpu.data import UCVolumeDataset
from torch.utils.data import IterableDataset
from PIL import Image
import torchvision.transforms.functional as TF
class ImageDataset(IterableDataset):
"""Decodes each cached file path from UCVolumeDataset into a tensor."""
def __init__(self, path_dataset: UCVolumeDataset):
self._path_dataset = path_dataset
def __iter__(self):
for local_path in self._path_dataset:
image = Image.open(local_path).convert("RGB")
yield TF.to_tensor(image)
path_dataset = UCVolumeDataset("/Volumes/catalog/schema/my_volume/images")
dataset = ImageDataset(path_dataset)
Sarmalayıcı, zaten önbelleğe alınmış yerel yolları alır; bu nedenle ayrıştırma adımı FUSE bağlama noktasına asla erişmez. Ekleme, belirteç oluşturma veya filtreleme için ek sarmalayıcıları zincirleyebilirsiniz.
En iyi performans için, varsayılan PyTorch UCVolumeDataset yerine serverless_gpu.data.DataLoader ile DataLoader'i eşleştirin. Sunucusuz GPU G/Ç için ayarlanır ve GPU işlem yaparken dosyaları eşzamanlı olarak getirir ve önbelleğe alır. Bkz. Veri yükleme performansı.
Dekoratör içine @distributed veri yükleme
Dağıtılmış eğitim için Sunucusuz GPU API'sini kullanırken veri yükleme kodunu @distributed dekoratörün içine taşıyın. Veri kümesi boyutu, turşunun izin verdiği boyut üst sınırını aşabilir, bu nedenle aşağıda gösterildiği gibi veri kümesinin dekoratör içinde oluşturulması önerilir:
from serverless_gpu import distributed
# This may cause a pickle error if the dataset is too large
dataset = get_dataset(file_path)
@distributed(gpus=8, gpu_type='H100')
def run_train():
# Load data inside the decorator to avoid pickle serialization issues
dataset = get_dataset(file_path)
...
Dekoratör içinde bir UCVolumeDataset oluşturduğunuzda, yineleme sırasında torch.distributed sıra bilgilerini okur ve dosyaları sıralar arasında otomatik olarak bölüştürür; bu nedenle dosya tabanlı hacim verileri için bir DistributedSampler gerekmez.
Veri yükleme performansı
/Workspace ve /Volumes dizinler uzak Unity Kataloğu depolama alanında barındırılır. Veri kümeniz Unity Kataloğu'nda depolanıyorsa, veri yükleme hızı kullanılabilir ağ bant genişliğiyle sınırlıdır. Birden çok epok eğitiyorsanız, önerilen yaklaşım bunu sizin için önbelleğe alan UCVolumeDataset kullanmaktır: her dosyayı ilk erişimde yerel depolamaya kopyalar ve sonraki okumaları yerel kopyadan sağlar. Birimlerdeki veri kümeleri için, eğitim yalnızca bir bölümüne değse bile ağacın tamamını ön tarafa kopyalayan bir kılavuz shutil.copytreeyerine bunu tercih edin.
Veri kümeniz büyükse, aşağıdaki teknikler aktarım hızını iyileştirebilir:
Getirme işlemini paralelleştirmek için kullanın
serverless_gpu.data.DataLoader. Bu, sunucusuz GPU G/Ç için ayarlanmış torçDataLoaderalt sınıfıdır:num_workersvarsayılan olarak 6 veprefetch_factor4'tür (PyTorch'un 0 ve 2'si ile karşılaştırıldığında), böylece GPU işlemi sırasında dosyalar eşzamanlı olarak getirilir ve önbelleğe alınır. Ayrıca, her parti için veri getirme sürelerini aktif MLflow çalışmasına kaydeder; bu da veri yükleme darboğazlarını tespit etmenize yardımcı olur.from serverless_gpu.data import DataLoader loader = DataLoader( dataset, batch_size=32, pin_memory=True, # num_workers=6, by default # prefetch_factor=4, by default # raise num_workers to increase parallel reads, or prefetch_factor to deepen each worker's queue. )num_workers, dosyalarıUCVolumeDatasetyuva boyunca genel bir adım aralığı kullanarak bölümlere ayırdığı için tüm rank’ler aynıworld_size × num_workersdeğerini kullanmalıdır. Eşleşmeyen değerler, dosyaların yinelenmelerine veya atlanmalarına neden olur.Toplu iş boyutunu artırın. Daha büyük toplu işlemler, daha fazla örnek üzerinde toplu iş başına veri yükleme yükünü amorti eder ve adım başına dosya getirme işlemlerinin sayısını azaltır. Sınırlayıcı faktör GPU belleğiyse, etkin toplu iş boyutunu korumak için daha büyük bir toplu iş boyutunu gradyan birikimiyle birleştirin.
Akış verisi kümeleri
Belleğe sığmayan çok büyük veri kümeleri için akış temelli yöntemleri kullanın.
-
UCVolumeDataset, yerel önbellekleme ve otomatik dağıtık bölümleme ile Unity Catalog birimlerinden dosyaları akışla okumak içinserverless_gpu.datakonumundan Bkz.UCVolumeDatasetile birimlerden yapılandırılmamış veri yükleme. - Özel akış mantığı için PyTorch IterableDataset.
- Hub'da veya birimlerde barındırılan veri kümeleri için akışla Yüz Tanıma veri kümelerini kucaklama.
- Dağıtılmış toplu veri işleme için Ray Data.