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
Tek düğümlü görevler için AI Çalışma Zamanı Genel Önizleme aşamasındadır. Çoklu GPU iş yükleri için dağıtılmış eğitim API'si Beta'da kalır.
Bu bölümde özellikle ML ve DL uygulamalarına yönelik yapay zeka çalışma zamanına veri yükleme hakkında bilgiler yer almaktadır. Spark Python API'sini kullanarak verileri yükleme ve dönüştürme hakkında daha fazla bilgi edinmek için öğreticiyi gözden geçirin.
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.
Birimlerden yapılandırılmamış verileri yükleme
Görüntüler, ses ve metin dosyaları gibi yapılandırılmamış veriler için Unity Kataloğu birimlerini kullanın. Aşağıdaki örnekte bir birimdeki dosyaların nasıl okunduğu ve pyTorch Datasetile nasıl kullanılacağı gösterilmektedir:
# Read files from a UC volume
volume_path = "/Volumes/catalog/schema/my_volume/images/"
from torch.utils.data import Dataset
import os
from PIL import Image
class ImageDataset(Dataset):
def __init__(self, root_dir):
self.file_list = [os.path.join(root_dir, f) for f in os.listdir(root_dir)]
def __len__(self):
return len(self.file_list)
def __getitem__(self, idx):
img = Image.open(self.file_list[idx])
return img
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)
...
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 dönem eğitiyorsanız, önerilen yaklaşım önce verileri yerel olarak, özellikle de hızlı NVMe SSD depolamada barındırılan /tmp dizine kopyalamaktır.
Veri kümeniz büyükse, aşağıdaki teknikler performansı geliştirebilir:
Çoklu dönem eğitimi için verileri yerel olarak önbelleğe alın. Dönemler
/tmparasında daha hızlı erişim için veri kümelerini kopyalayın:import shutil shutil.copytree("/Volumes/catalog/schema/volume/dataset", "/tmp/dataset")Veri getirme işlemini paralelleştirme. GPU hesaplamasıyla veri yüklemeyi eşzamanlı gerçekleştirmek için torch DataLoader'ı birden fazla çalışan kullanarak kullanın. En az 2 olarak ayarlayın
num_workers. Performansı artırmak için, paralel okuma sayısını artırannum_workersveya her çalışanın önceden yüklediği öğe sayısını artıranprefetch_factorartırılabilir.from torch.utils.data import DataLoader loader = DataLoader( dataset, batch_size=32, num_workers=2, prefetch_factor=2, pin_memory=True )Büyük tablosal veri kümeleri için Spark Connect'i kullanın. Spark Connect çoğu PySpark API'lerini destekler ve dağıtılmış okuma işlemlerini verimli bir şekilde işler.
Akış verisi kümeleri
Belleğe sığmayan çok büyük veri kümeleri için akış temelli yöntemleri kullanın.
- Ö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.