全部产品
Search
文档中心

Platform For AI:Kirim pekerjaan pelatihan

更新时间:Jul 06, 2025

PAI SDK untuk Python menyediakan API tingkat tinggi yang mudah digunakan. Anda dapat menggunakan SDK ini untuk mengirimkan pekerjaan pelatihan ke Platform for AI (PAI) dan menjalankan pekerjaan tersebut di cloud. Topik ini menjelaskan cara menyiapkan skrip pekerjaan pelatihan serta menggunakan SDK untuk mengirimkan pekerjaan pelatihan.

Penagihan

Saat mengirimkan pekerjaan pelatihan, pekerjaan tersebut berjalan pada sumber daya Deep Learning Containers (DLC), dan Anda akan dikenakan biaya untuk penggunaan sumber daya tersebut. Untuk informasi lebih lanjut, lihat Penagihan DLC.

Ikhtisar

Anda dapat menggunakan kelas Estimator dalam modul pai.estimator dari PAI SDK untuk Python untuk mengirimkan pekerjaan pelatihan. Langkah-langkahnya adalah sebagai berikut:

  • Buat instance Estimator untuk mengonfigurasi pekerjaan pelatihan, termasuk skrip pelatihan, perintah startup, hyperparameter, gambar, dan sumber daya komputasi.

  • Gunakan metode Estimator.fit() untuk menentukan data pelatihan dan mengirimkan pekerjaan pelatihan.

Contoh kode:

from pai.estimator import Estimator

# Buat instance Estimator untuk mengonfigurasi pekerjaan pelatihan.
est = Estimator(
    command="<LaunchCommand>"
    source_dir="<SourceCodeDirectory>"
    image_uri="<TrainingImageUri>"
    instance_type="<TrainingInstanceType>",
    hyperparameters={
        "n_estimators": 500,
        "max_depth": 5,
    },
)

# Tentukan data pelatihan dan kirimkan pekerjaan pelatihan.
est.fit(
    inputs={
        "train_data": "oss://<YourOssBucket>/path/to/train/data/",
    }
)

# Dapatkan jalur model keluaran.
print(est.model_data())

Siapkan skrip pekerjaan pelatihan dan dependensi yang diperlukan

  • Siapkan Skrip Pekerjaan Pelatihan

    Anda dapat membuat skrip pekerjaan pelatihan di lingkungan lokal dan mengirimkannya ke PAI. PAI mengonfigurasi lingkungan cloud dan menjalankan skrip tersebut. Contoh skrip pekerjaan pelatihan:

    import argparse
    import os
    import json
    
    def train(hps, train_data, test_data):
        """Tambahkan kode Anda untuk pelatihan model."""
        pass
    
    def save_model(model):
        """Simpan model keluaran."""
        # Dapatkan jalur tempat model keluaran akan disimpan dengan menggunakan variabel lingkungan PAI_OUTPUT_MODEL. Jalur default: /ml/output/model/. 
        output_model_path = os.environ.get("PAI_OUTPUT_MODEL")
    
        # Tulis model keluaran ke jalur yang diperoleh. 
        pass
    
    def load_hyperparameters():
        """Baca hyperparameter."""
        # Dapatkan jalur yang berisi hyperparameter dengan menggunakan variabel lingkungan PAI_CONFIG_DIR. Jalur default: /ml/input/config/. 
        hps_path = os.path.join(os.environ.get("PAI_CONFIG_DIR"), "hyperparameters.json")
        with open(hps_path, "r") as f:
            hyperparameters = json.load(f)
        return hyperparameters
    
    def run():
        #1. Muat hyperparameter. 
        hps = load_hyperparameters()
        print("Hyperparameter: ", hps)
    
        #2. Muat data masukan. 
        # Panggil metode est.fit() untuk memuat data masukan yang disimpan di File Storage NAS (NAS) atau Object Storage Service (OSS) ke dalam kontainer. 
        # Dapatkan jalur data masukan di lingkungan lokal dengan menggunakan variabel lingkungan PAI_INPUT_{CHANNEL_NAME}. 
        train_data = os.environ.get("PAI_INPUT_TRAIN")
        test_data = os.environ.get("PAI_INPUT_TEST")
    
        model = train(hps, train_data, test_data)
    
        #3. Tambahkan kode pelatihan. Saat pelatihan selesai, model keluaran disimpan ke jalur yang ditentukan. 
        save_model(model)
    
    
    if __name__ == "__main__":
        run()

    Skrip pekerjaan pelatihan harus memenuhi standar tertentu untuk memuat hyperparameter, memuat data masukan, dan menyimpan model keluaran. Bagian berikut menjelaskan persyaratannya.

    • Muat Hyperparameter

      Setelah mengonfigurasi parameter hyperparameters untuk instance Estimator, file bernama hyperparameters.json dibuat di jalur yang ditentukan oleh variabel lingkungan PAI_CONFIG_DIR. Jalur default adalah /ml/input/config/. Di dalam skrip pekerjaan pelatihan, Anda dapat memperoleh hyperparameter dengan membaca file {PAI_CONFIG_DIR}/hyperparameters.json.

      Sebagai contoh, jika Anda menentukan hyperparameters={"batch_size": 32, "learning_rate": 0.01} untuk instance Estimator, berikut adalah isi file {PAI_CONFIG_DIR}/hyperparameters.json:

      {
        "batch_size": "32",
      	"learning-rate": "0.01"
      }
      
    • Muat Data Masukan

      Gunakan parameter inputs dari metode Estimator.fit() untuk menentukan jalur data masukan. Tentukan jalur dalam format pasangan kunci-nilai, di mana kunci adalah nama data masukan (ChannelName) dan nilainya adalah jalur penyimpanan data masukan. Contoh kode:

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

      Data masukan dipasang ke jalur /ml/input/data/{ChannelName}. Di dalam skrip pekerjaan pelatihan, Anda dapat memperoleh jalur pemasangan data masukan menggunakan variabel lingkungan PAI_INPUT_{ChannelName} dan membaca data seperti membaca file lokal. Dalam contoh sebelumnya, gunakan variabel lingkungan PAI_INPUT_TRAIN dan PAI_INPUT_TEST.

    • Simpan Model Keluaran

      Simpan model keluaran ke jalur yang diperlukan untuk menjaga persistensi model. Gunakan variabel lingkungan PAI_OUTPUT_MODEL untuk mendapatkan jalur penyimpanan model. Jalur default adalah /ml/output/model.

  • Jika skrip pekerjaan pelatihan memerlukan dependensi paket Python tambahan yang tidak disediakan dalam gambar yang digunakan, buat file requirements.txt di direktori tempat skrip pekerjaan pelatihan berada. Sebelum skrip dijalankan, dependensi pustaka pihak ketiga dipasang di lingkungan pekerjaan.

Simpan skrip pekerjaan pelatihan dan file dependensi terkait di direktori tertentu. Misalnya, simpan skrip pekerjaan pelatihan dan file dependensi di direktori train_src yang Anda buat di lingkungan lokal. Saat membuat instance Estimator, tentukan source_dir="train_src" untuk mengemas dan mengunggah isi direktori train_src ke PAI.

|-- train_src # Direktori yang berisi skrip pekerjaan pelatihan. 
	|-- requirements.txt # Dependensi pihak ketiga tambahan dari skrip pekerjaan pelatihan. 
	'-- train.py # Skrip pekerjaan pelatihan. Anda dapat menjalankan skrip dengan menggunakan perintah python train.py.
	`-- utils.py

Dapatkan gambar PAI

Untuk mengirimkan pekerjaan pelatihan, tentukan gambar yang ingin digunakan untuk menjalankan pekerjaan. Gambar tersebut harus berisi dependensi skrip pekerjaan pelatihan, termasuk framework pembelajaran mesin dan pustaka pihak ketiga. Anda dapat menggunakan gambar kustom dari Container Registry (ACR) atau gambar pra-bangun dari PAI. PAI menyediakan gambar pra-bangun untuk framework pembelajaran mesin umum. Gunakan metode pai.image.retrieve untuk mendapatkan gambar PAI. Contoh kode:

Catatan

Untuk informasi tentang pustaka Python pihak ketiga yang sudah diinstal sebelumnya di gambar PAI, lihat Gambar Publik.

from pai.image import retrieve, list_images, ImageScope


# Dapatkan semua gambar PAI untuk pelatihan dengan PyTorch.
for image_info in list_images(framework_name="PyTorch"):
 print(image_info)

# Dapatkan gambar PAI untuk pelatihan dengan TensorFlow 2.3 pada CPU.
print(retrieve(framework_name="TensorFlow", framework_version="2.3"))

# Dapatkan gambar PAI terbaru untuk pelatihan dengan TensorFlow pada GPU.
# Tentukan framework_version="latest" untuk mendapatkan gambar terbaru.
print(retrieve(framework_name="TensorFlow", framework_version="latest",
		accelerator_type="GPU"))

# Dapatkan gambar PAI untuk pelatihan dengan PyTorch 1.12 pada GPU.
print(retrieve(framework_name="PyTorch", framework_version="1.12",
 accelerator_type="GPU"))

Jalankan pekerjaan pelatihan

Jalankan pekerjaan pelatihan di PAI

Untuk menjalankan pekerjaan pelatihan di PAI, buat instance Estimator untuk mengonfigurasi pekerjaan pelatihan, lalu panggil metode Estimator.fit() untuk mengirimkan pekerjaan. Setelah pekerjaan dikirimkan, sistem mencetak URL halaman detail pekerjaan dan terus mencetak log pekerjaan hingga status pekerjaan berubah menjadi berhasil, gagal, atau dihentikan. Anda dapat menggunakan URL yang dicetak untuk melihat detail eksekusi pekerjaan, log pekerjaan, penggunaan sumber daya, dan metrik pelatihan di konsol PAI.

Secara default, metode Estimator.fit() keluar setelah pekerjaan selesai. Gunakan metode estimator.model_data() untuk mendapatkan jalur OSS model keluaran.

Contoh kode:

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

# Dapatkan gambar PAI terbaru untuk pelatihan dengan PyTorch.
torch_image_uri = retrieve("PyTorch", framework_version="1.12").image_uri

est = Estimator(
    # Perintah startup pekerjaan pelatihan.
    command="python train.py",
    # Jalur skrip pekerjaan pelatihan. Anda dapat menentukan jalur relatif atau absolut di sistem file lokal. Anda juga dapat menentukan jalur OSS dari paket TAR. Contoh: oss://<YourOssBucket>/your-code-path-to/source.tar.gz.
    # Jika file requirements.txt ada di direktori yang berisi skrip pekerjaan pelatihan, dependensi dalam file tersebut secara otomatis diinstal sebelum skrip dijalankan.
    source_dir="./train_src/",
    # Gambar yang ingin Anda gunakan untuk pelatihan.
    image_uri=torch_image_uri,
    # Jenis instans yang ingin Anda gunakan untuk pelatihan.
    instance_type="ecs.c6.large",
    # Hyperparameter untuk pelatihan.
    hyperparameters={
        "n_estimators": 500,
        "objective": "reg:squarederror",
        "max_depth": 5,
    },
    # Awalan nama pekerjaan pelatihan. Nama dalam format {base_job_name}_{submitted-datetime}.
    base_job_name="example_train_job",
)

# Kirim pekerjaan pelatihan dan cetak URL halaman detail pekerjaan. Secara default, metode Estimator.fit() keluar setelah status pekerjaan berubah menjadi berhasil, gagal, atau dihentikan.
est.fit()

# Dapatkan jalur model keluaran.
print(est.model_data())

Jalankan pekerjaan pelatihan di lingkungan lokal

Debugging sulit dilakukan di lingkungan cloud. Oleh karena itu, Anda dapat menjalankan pekerjaan pelatihan dan melakukan debugging di lingkungan lokal. Untuk menjalankan pekerjaan pelatihan di lingkungan lokal, tentukan instance_type="local" saat membuat instance Estimator. Dengan cara ini, pekerjaan pelatihan dijalankan di kontainer Docker.

estimator = Estimator(
    image_uri=image_uri,
    entry_point="train.py",
    # Jalankan pekerjaan pelatihan di lingkungan lokal.
    instance_type="local",
)

estimator.fit(
    inputs={
        # Anda dapat menggunakan data OSS. Data diunduh dan kemudian dipasang ke kontainer.
        "train": "oss://<BucketName>/path-to-data/",
        # Anda juga dapat menggunakan data di mesin host. Data dipasang ke direktori yang sesuai.
        "test": "/data/to/test/data"
    }
)

# Dapatkan jalur model keluaran.
print(estimator.model_data())

Referensi

Lampiran

Variabel lingkungan preset pekerjaan pelatihan

Jika Anda mengirimkan pekerjaan pelatihan ke PAI, PAI menyimpan informasi berikut tentang pekerjaan sebagai variabel lingkungan: hyperparameter, jalur data masukan, dan jalur model keluaran. Anda dapat menggunakan variabel lingkungan yang telah ditentukan sebelumnya untuk mendapatkan informasi tersebut saat mengonfigurasi skrip pekerjaan pelatihan atau perintah startup (Estimator.command).

  • PAI_HPS_{HYPERPARAMETER_NAME}

    Variabel lingkungan ini menentukan nilai satu hyperparameter. Variabel lingkungan hanya dapat berisi huruf, angka, dan garis bawah (_). Karakter lain dalam hyperparameter diganti dengan garis bawah (_).

    Sebagai contoh, jika Anda menentukan hyperparameters={"epochs": 10, "batch-size": 32, "train.learning_rate": 0.001}, variabel lingkungan berikut dibuat:

    PAI_HPS_EPOCHS=10
    PAI_HPS_BATCH_SIZE=32
    PAI_HPS_TRAIN_LEARNING_RATE=0.001
    

    Anda dapat menggunakan variabel lingkungan ini di perintah startup pekerjaan pelatihan. Contoh kode:

    est = Estimator(
     command="python train.py --epochs $PAI_HPS_EPOCHS --batch-size $PAI_HPS_BATCH_SZIE",
     hyperparameters={
     "epochs": 10,
     "batch-size": 32,
     },
     # argumen lain untuk estimator..
    )
    

    Di dalam skrip pekerjaan pelatihan (train.py), Anda dapat memperoleh hyperparameter menggunakan pustaka argparse untuk mengurai parameter perintah.

  • PAI_USER_ARGS

    Variabel lingkungan ini menentukan nilai semua hyperparameter dalam format --{hyperparameter_name} {hyperparameter_value}.

    Sebagai contoh, jika Anda menentukan hyperparameters={"epochs": 10, "batch-size": 32, "learning-rate": 0.001}, variabel lingkungan berikut dibuat:

    PAI_USER_ARGS="--epochs 10 --batch-size 32 --learning-rate 0.001"
    

    Anda dapat menggunakan variabel lingkungan ini di perintah startup. Dalam contoh berikut, perintah aktual adalah python train.py --epochs 10 --batch-size 32 --learning-rate 0.001.

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

    Variabel lingkungan ini menentukan nilai semua hyperparameter dalam format JSON.

    Sebagai contoh, jika Anda menentukan hyperparameters={"epochs": 10, "batch-size": 32}, variabel lingkungan berikut dibuat:

    PAI_HPS={"epochs": 10, "batch-size": 32}
    
  • PAI_INPUT_{channel_name}

    Variabel lingkungan ini menentukan saluran masukan pekerjaan. Setiap channel_name sesuai dengan jalur pemasangan data masukan yang disimpan di OSS atau NAS.

    Sebagai contoh, jika Anda menentukan est.fit(inputs={"train": "oss://<YourOssBucket>/path-to-data/", "test": "oss://<YourOssBucket>/path-to/data/test.csv"}), variabel lingkungan berikut dibuat:

    PAI_INPUT_TRAIN=/ml/input/data/train/
    PAI_INPUT_TEST=/ml/input/data/test/test.csv
    

    Anda dapat membaca data masukan di jalur pemasangan dengan cara yang sama seperti membaca file lokal.

    Catatan

    Jika Anda menentukan jalur OSS yang diakhiri dengan garis miring (/), variabel lingkungan menunjuk ke direktori. Jika Anda menentukan jalur OSS yang diakhiri dengan nama file, variabel lingkungan menunjuk ke file.

  • PAI_OUTPUT_{channel_name}

    Variabel lingkungan ini menentukan saluran keluaran pekerjaan. Secara default, saluran keluaran berikut dibuat: MODEL dan CHECKPOINTS, di mana MODEL menentukan jalur model keluaran dan CHECKPOINTS menentukan jalur checkpoint. Setiap channel_name sesuai dengan jalur pemasangan dan URI OSS. Anda dapat memperoleh jalur file menggunakan variabel lingkungan PAI_OUTPUT_{channel_name}.

    PAI_OUTPUT_MODEL=/ml/output/model/
    PAI_OUTPUT_CHECKPOINTS=/ml/output/checkpoints/
    

    Setelah menyimpan model keluaran atau checkpoint ke jalur yang diperlukan, PAI secara otomatis mengunggah model atau checkpoint ke jalur OSS yang sesuai.

Struktur direktori

Berikut adalah contoh struktur direktori untuk pekerjaan pelatihan yang berjalan di PAI:

/ml
|-- usercode # Direktori tempat file kode Anda dipasang. Anda dapat memperoleh direktori ini dengan menggunakan variabel lingkungan PAI_WORKING_DIR.
|   |-- requirements.txt
|   `-- train.py
|-- input # Data masukan dan konfigurasi pekerjaan.
| '-- config # Direktori yang berisi konfigurasi pekerjaan. Anda dapat memperoleh direktori ini dengan menggunakan variabel lingkungan PAI_CONFIG_DIR.
| |-- hyperparameters.json # Hyperparameter pekerjaan pelatihan.
| '-- data # Saluran masukan pekerjaan. Dalam contoh ini, pekerjaan memiliki dua saluran masukan: train_data dan test_data.
|       |-- test_data
|       |   `-- test.csv
|       `-- train_data
|           `-- train.csv
'-- output # Saluran keluaran pekerjaan. Secara default, saluran MODEL dan CHECKPOINTS digunakan.
        '-- model # Anda dapat memperoleh jalur model keluaran dengan menggunakan variabel lingkungan PAI_OUTPUT_{CHANNEL_NAME}.
        `-- checkpoints