Tüm Ürünler
Search
Belge Merkezi

Platform For AI:Eğitim işi gönderme

Son Güncelleme:Oct 04, 2026

Platform for AI (PAI) için Python SDK, makine öğrenimi eğitim işlerini cloud ortamına göndermek ve çalıştırmak amacıyla yüksek düzeyli bir Estimator API'si sağlar.

Faturalama

Eğitim işleri Deep Learning Containers (DLC) kaynakları üzerinde çalışır. Kullanılan kaynaklara göre ücretlendirme uygulanır. Ayrıntılar için bkz. DLC faturalandırması.

Çalışma mekanizması

Bir eğitim işi göndermek iki adımdan oluşur:

  1. İşi yapılandırmak (başlatma komutu, kaynak kodu, konteyner görüntüsü, örnek türü ve hiperparametreler) için bir Estimator örneği oluşturun.

  2. Giriş verilerini belirtmek ve işi göndermek için Estimator.fit() yöntemini çağırın.

from pai.estimator import Estimator

est = Estimator(
    command="<LaunchCommand>",
    source_dir="<SourceCodeDirectory>",
    image_uri="<TrainingImageUri>",
    instance_type="<TrainingInstanceType>",
    hyperparameters={
        "n_estimators": 500,
        "max_depth": 5,
    },
)

est.fit(
    inputs={
        "train_data": "oss://<YourOssBucket>/path/to/train/data/",
    }
)

# Get the OSS path of the output model.
print(est.model_data())

Ön koşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

  • Yüklenmiş PAI SDK for Python

  • Eğitim verilerini ve model çıktısını depolamak için bir Object Storage Service (OSS) paketi

  • (İsteğe bağlı) İşleri hata ayıklama amacıyla yerel olarak çalıştırmayı planlıyorsanız Docker Desktop yüklü olmalıdır

Bir eğitim işi gönderin

Adım 1: Eğitim betiğinizi hazırlayın

Eğitim betiğinizi yerel olarak yazın. PAI, cloud ortamını hazırlar ve betiği çalıştırır. Betiğiniz PAI çalışma zamanıyla entegre olmak için aşağıdaki kurallara uymalıdır.

Eğitim konteynerinde kullanılabilen ortam değişkenleri

PAI, her eğitim konteynerine aşağıdaki ortam değişkenlerini enjekte eder. Bu değişkenlere eğitim betiğinizde veya başlatma komutunda başvurabilirsiniz.

Değişken Açıklama Varsayılan yol
PAI_CONFIG_DIR hyperparameters.json ve diğer iş yapılandırma dosyalarını içeren dizin /ml/input/config/
PAI_WORKING_DIR Kod dosyalarınızın bağlandığı dizin /ml/usercode/
PAI_INPUT_{CHANNEL_NAME} Adlandırılmış kanal için giriş verilerinin bağlama yolu /ml/input/data/{channel_name}/
PAI_OUTPUT_MODEL Çıktı modelinin kaydedildiği yol — PAI, iş tamamlandıktan sonra içeriği OSS'e yükler /ml/output/model/
PAI_OUTPUT_CHECKPOINTS Kontrol noktalarının kaydedildiği yol — PAI, iş tamamlandıktan sonra içeriği OSS'e yükler /ml/output/checkpoints/
PAI_HPS_{HYPERPARAMETER_NAME} Tek bir hiperparametrenin değeri. Ortam değişkenleri yalnızca harf, rakam ve alt çizgi (_) içerebilir. Hiperparametre adındaki diğer karakterler _ ile değiştirilir. PAI_HPS_EPOCHS=10
PAI_USER_ARGS Komut satırı bağımsız değişkeni olarak kullanılmaya hazır, --{name} {value} biçiminde biçimlendirilmiş tüm hiperparametreler PAI_USER_ARGS="--epochs 10 --batch-size 32"
PAI_HPS JSON dizesi olarak tüm hiperparametreler PAI_HPS={"epochs": 10, "batch-size": 32}

Hiperparametreleri yükleme

Estimator üzerinde hyperparameters değerlerini ayarladığınızda, PAI bu değerleri {PAI_CONFIG_DIR}/hyperparameters.json dosyasına yazar (varsayılan yol: /ml/input/config/hyperparameters.json).

Hiperparametreleri bu dosyadan okuyun:

import json
import os

def load_hyperparameters():
    hps_path = os.path.join(os.environ["PAI_CONFIG_DIR"], "hyperparameters.json")
    with open(hps_path) as f:
        return json.load(f)

Örneğin, hyperparameters={"batch_size": 32, "learning_rate": 0.01} şu çıktıyı üretir:

{
  "batch_size": "32",
  "learning-rate": "0.01"
}

Alternatif olarak, tüm hiperparametreleri betiğinize komut satırı bağımsız değişkenleri olarak iletmek için PAI_USER_ARGS kullanabilirsiniz:

est = Estimator(
    command="python train.py $PAI_USER_ARGS",
    hyperparameters={
        "epochs": 10,
        "batch-size": 32,
        "learning-rate": 0.001,
    },
    # ...
)

Bunları eğitim betiğinde argparse kullanarak ayrıştırın.

hyperparameters={"epochs": 10, "batch-size": 32, "train.learning_rate": 0.001} için PAI şunları oluşturur:

PAI_HPS_EPOCHS=10
PAI_HPS_BATCH_SIZE=32
PAI_HPS_TRAIN_LEARNING_RATE=0.001

Giriş verilerini yükleme

Giriş verilerini Estimator.fit() yönteminin inputs parametresi aracılığıyla iletin. Her girdi, anahtarın kanal adı olduğu ve değerin bir OSS veya File Storage NAS (NAS) yolu olduğu bir anahtar-değer çiftidir:

est.fit(
    inputs={
        "train": "oss://<YourOssBucket>/train/data/train.csv",
        "test": "oss://<YourOssBucket>/test/data/",
    }
)

PAI, verileri /ml/input/data/{channel_name}/ konumuna bağlar. Bağlama yolunu PAI_INPUT_{CHANNEL_NAME} kullanarak okuyun:

train_data = os.environ["PAI_INPUT_TRAIN"]   # /ml/input/data/train/
test_data  = os.environ["PAI_INPUT_TEST"]    # /ml/input/data/test/
OSS yolu / ile bitiyorsa ortam değişkeni bir dizine işaret eder. Bir dosya adı ile bitiyorsa o dosyaya işaret eder.

Çıktı modelini kaydetme

Eğitilen modeli PAI_OUTPUT_MODEL tarafından belirtilen yola kaydedin (varsayılan: /ml/output/model/). PAI, buraya yazılan her şeyi otomatik olarak OSS'e yükler.

import os

def save_model(model, model_dir=None):
    if model_dir is None:
        model_dir = os.environ["PAI_OUTPUT_MODEL"]
    # Write your model files to model_dir.
    # Example: torch.save(model.state_dict(), os.path.join(model_dir, "model.pth"))

Tam betik örneği

import json
import os

def load_hyperparameters():
    hps_path = os.path.join(os.environ["PAI_CONFIG_DIR"], "hyperparameters.json")
    with open(hps_path) as f:
        return json.load(f)

def train(hps, train_data, test_data):
    """Add your model training code here."""
    pass

def save_model(model):
    output_path = os.environ["PAI_OUTPUT_MODEL"]
    # Write the model to output_path.
    pass

def run():
    # 1. Load hyperparameters.
    hps = load_hyperparameters()

    # 2. Load input data from mounted paths.
    train_data = os.environ["PAI_INPUT_TRAIN"]
    test_data  = os.environ["PAI_INPUT_TEST"]

    model = train(hps, train_data, test_data)

    # 3. Save the output model.
    save_model(model)

if __name__ == "__main__":
    run()

Üçüncü taraf bağımlılıkları ekleme

Betiğiniz eğitim görüntüsünde bulunmayan Python paketlerine ihtiyaç duyuyorsa, betiğinizle aynı dizine bir requirements.txt dosyası ekleyin. PAI, betiği çalıştırmadan önce listelenen paketleri yükler.

Kod dizininizi aşağıdaki gibi düzenleyin:

train_src/
├── requirements.txt   # Third-party dependencies
├── train.py           # Entry point; run with: python train.py
└── utils.py

Bu dizini paketleyip PAI'e yüklemek için Estimator üzerinde source_dir="train_src" ayarlayın.

Adım 2: Bir eğitim görüntüsü seçin

Çerçevenizi ve kitaplık bağımlılıklarınızı içeren bir konteyner görüntüsü belirtin. PAI önceden oluşturulmuş bir görüntü veya Container Registry (ACR) üzerinden özel bir görüntü kullanabilirsiniz.

PAI önceden oluşturulmuş bir görüntü kullanma

from pai.image import retrieve, list_images, ImageScope

# List all PAI images for PyTorch.
for image_info in list_images(framework_name="PyTorch"):
    print(image_info)

# Get the TensorFlow 2.3 image for CPU training.
tf_image = retrieve(framework_name="TensorFlow", framework_version="2.3")

# Get the latest TensorFlow image for GPU training.
tf_gpu_image = retrieve(
    framework_name="TensorFlow",
    framework_version="latest",
    accelerator_type="GPU",
)

# Get the PyTorch 1.12 image for GPU training.
torch_gpu_image = retrieve(framework_name="PyTorch", framework_version="1.12",
                           accelerator_type="GPU")
PAI görüntülerinde önceden yüklenen üçüncü taraf kitaplıkların listesi için bkz. Genel görüntüler .

Adım 3: İşi gönderin

Bir Estimator örneği oluşturun ve işi göndermek için fit() yöntemini çağırın. Gönderimden sonra PAI, iş ayrıntıları sayfasının URL'sini yazdırır ve iş başarılı olana, başarısız olana veya durdurulana kadar günlükleri akar.

from pai.estimator import Estimator
from pai.image import retrieve

torch_image_uri = retrieve("PyTorch", framework_version="1.12").image_uri

est = Estimator(
    command="python train.py",
    source_dir="./train_src/",
    image_uri=torch_image_uri,
    instance_type="ecs.c6.large",
    hyperparameters={
        "n_estimators": 500,
        "objective": "reg:squarederror",
        "max_depth": 5,
    },
    base_job_name="example_train_job",
)

est.fit()

# Get the OSS path of the output model.
print(est.model_data())

Temel parametreler:

  • command — PAI'in konteyner içinde çalıştırdığı başlatma komutu (örneğin, python train.py).

  • source_dir — Eğitim betiğinizi ve bağımlılıklarınızı içeren yerel dizin. PAI, içeriğini paketler ve yükler. Ayrıca bir TAR arşivine yönelik bir OSS yolu da kabul eder (örneğin, oss://<YourOssBucket>/source.tar.gz). Bu dizinde requirements.txt dosyası varsa bağımlılıklar iş çalışmadan önce otomatik olarak yüklenir.

  • image_uri — Konteyner görüntüsü URI'si. Bir PAI önceden oluşturulmuş görüntü URI'si almak için retrieve() kullanın veya özel bir ACR görüntü URI'si sağlayın.

  • instance_type — Eğitim için kullanılan ECS örnek türü (örneğin, ecs.c6.large).

  • hyperparameters — Eğitim betiğine aktarılan anahtar-değer çiftleri. Değerler hyperparameters.json dosyasına yazılır ve ayrıca ortam değişkenleri olarak sunulur.

  • base_job_name — İş adı için ön ek. Tam ad {base_job_name}_{submitted-datetime} biçimini izler.

fit() döndürdükten sonra, kaydedilen modelin OSS yolunu almak için est.model_data() yöntemini çağırın.

Yerel olarak hata ayıklama

Cloud ortamında hata ayıklama yavaş olabilir. instance_type="local" ayarını yaparak bir eğitim işini yerel olarak çalıştırın ve hata ayıklayın. İş yerel bir Docker konteynerinde çalışır.

est = Estimator(
    command="python train.py",
    source_dir="./train_src/",
    image_uri=torch_image_uri,
    instance_type="local",
)

est.fit(
    inputs={
        # OSS data is downloaded and mounted into the container.
        "train": "oss://<BucketName>/path-to-data/",
        # Local paths are mounted directly.
        "test": "/data/to/test/data",
    }
)

print(est.model_data())

Dizin yapısı

Aşağıda, bir PAI eğitim konteynerinin içindeki tam dizin düzeni gösterilmektedir:

/ml
├── usercode/               # Your code files (PAI_WORKING_DIR)
│   ├── requirements.txt
│   └── train.py
├── input/
│   ├── config/             # Job configuration (PAI_CONFIG_DIR)
│   │   └── hyperparameters.json
│   └── data/               # Input channels
│       ├── train/
│       │   └── train.csv
│       └── test/
│           └── test.csv
└── output/                 # Output channels
    ├── model/              # PAI_OUTPUT_MODEL
    └── checkpoints/        # PAI_OUTPUT_CHECKPOINTS

Sonraki adımlar