Laufzeitversionen verwalten

AI Platform Training verwendet Images, um die VMs zu konfigurieren, die Ihre Trainings- und Vorhersageanfragen in der Cloud ausführen. Diese Images enthalten das Basisbetriebssystem, grundlegende Technologiepakete, pip-Pakete (Python-Bibliotheken) und Betriebssystempakete. Die Images werden regelmäßig aktualisiert, um neue Verbesserungen und Features einzubinden. Mithilfe der AI Platform Training-Versionsverwaltung können Sie die richtige Konfiguration für die Arbeit mit Ihrem Modell auswählen.

Wichtige Hinweise zu Versionen

  • Testen Sie die Trainingsjobs und Modelle unabhängig davon, ob es sich um eine Haupt- oder Nebenversion handelt, immer gründlich, nachdem Sie auf eine neue Laufzeitversion umgestellt haben.
  • AI Platform Training unterstützt jede Laufzeitversion nach ihrer Veröffentlichung zwölf Monate lang. Nach Ablauf der zwölf Monate können Sie keine Trainingsjobs, Batchvorhersagejobs oder Modellversionen mehr erstellen, die die Laufzeitversion verwenden.

    24 Monate nach der Veröffentlichung der Laufzeitversion löscht AI Platform Prediction alle Modellversionen, die die Laufzeitversion verwenden.

    Weitere Informationen zur zeitlichen Verfügbarkeit für Laufzeitversionen

Informationen zu Versionsnummern

Die in AI Platform Training verwendeten Images entsprechen der AI Platform Training-Laufzeitversion. Für die Laufzeitversion gilt das folgende Format:

major_version.minor_version
    

Haupt- und Nebenversionen

Für die Einbindung folgender Elemente werden regelmäßig neue Haupt- und Nebenversionen erstellt:

  • Releases für:
    • Betriebssystem
    • Unterstützte Frameworks für maschinelles Lernen
  • Änderungen oder Aktualisierungen der AI Platform Training-Funktionalität

Eine neue Hauptversion kann funktionsgefährdende Änderungen enthalten, sodass Code, der für Vorgängerversionen geschrieben wurde, aktualisiert werden muss. Neue Nebenversionen sollten keine funktionsgefährdenden Änderungen enthalten und mit allen Varianten derselben Hauptversion abwärtskompatibel sein.

Laufzeitversionen auswählen

Wählen Sie die Laufzeitversion aus, die die neuesten Versionen Ihres ML-Frameworks und anderer von Ihnen verwendeter Pakete unterstützt.

Version 1.13 ist die früheste AI Platform Training-Laufzeitversion, die Unterstützung für scikit-learn und XGBoost bietet.

Die Details der einzelnen Versionen finden Sie in der AI Platform Training-Versionsliste.

Laufzeitversion festlegen

Wenn Sie eine Trainingsjobanfrage senden, sollten Sie unbedingt die Laufzeitversion festlegen:

gcloud

Verwenden Sie das Flag --runtime-version, wenn Sie den Befehl gcloud ai-platform jobs submit training ausführen.

    gcloud ai-platform jobs submit training my_job \
        --module-name trainer.task \
        --job-dir gs://my/training/job/directory \
        --package-path /path/to/my/project/trainer \
        --region us-central1 \
        --runtime-version 2.1 \
        --python-version 3.7
    

Python

Geben Sie bei der Definition Ihrer Trainingsjobanfrage die runtimeVersion an:

    training_inputs = {'scaleTier': 'BASIC',
        'packageUris': ['gs://my/trainer/path/package-0.0.0.tar.gz'],
        'pythonModule': 'trainer.task'
        'args': ['--arg1', 'value1', '--arg2', 'value2'],
        'region': 'us-central1',
        'jobDir': 'gs://my/training/job/directory',
        'runtimeVersion': '2.1',
        'pythonVersion': '3.7'}

    job_spec = {'jobId': my_job_name, 'trainingInput': training_inputs}
    

Weitere Informationen zum Senden von Trainingsjobs finden Sie im Abschnitt zur TrainingInput API.

Python-Version festlegen

Python 3.7 ist in der Laufzeitversion 1.15 und höher verfügbar.

Ältere Python-Versionen sind für bestimmte Laufzeitversionen verfügbar:

  • Python 3.5 ist verfügbar, wenn Sie die AI Platform Training-Laufzeitversion 1.13 bis 1.14 verwenden.

  • Python 2.7 ist in den Laufzeitversionen 1.15 und niedriger verfügbar.

Das folgende Beispiel zeigt, wie Python 3.7 für das Training festgelegt wird. Sie können Python 3.5 oder Python 2.7 auf ähnliche Weise angeben.

gcloud

Wenn Sie Python 3.7 für das Training verwenden möchten, geben Sie --python-version 3.7 an und verwenden Sie die Laufzeitversion 1.15 oder höher:

    gcloud ai-platform jobs submit training my_job \
        --module-name trainer.task \
        --job-dir gs://my/training/job/directory \
        --package-path /path/to/my/project/trainer \
        --python-version 3.7 \
        --region us-central1 \
        --runtime-version 2.1
    

Python

Wenn Sie für das Training Python 3.7 verwenden möchten, geben Sie als runtimeVersion eine Version ab '1.15' und als pythonVersion die Version '3.7' an:

    training_inputs = {'scaleTier': 'BASIC',
        'packageUris': ['gs://my/trainer/path/package-0.0.0.tar.gz'],
        'pythonModule': 'trainer.task'
        'args': ['--arg1', 'value1', '--arg2', 'value2'],
        'region': 'us-central1',
        'jobDir': 'gs://my/training/job/directory',
        'runtimeVersion': '2.1',
        'pythonVersion': '3.7'}

    job_spec = {'jobId': my_job_name, 'trainingInput': training_inputs}
    

Weitere Informationen zum Senden von Trainingsjobs finden Sie im Abschnitt zur TrainingInput API.

Benutzerdefinierte Pakete verwenden

Sie haben drei Möglichkeiten, die Pakete auf Ihren Trainingsinstanzen zu ändern:

  • Sie erstellen einen benutzerdefinierten Container, der Ihre Abhängigkeiten für ein Image vorinstalliert.
  • Sie geben PyPI-Pakete als Abhängigkeiten für Ihr Trainerpaket an.
  • Sie laden Paketdateien (Tarballs) manuell hoch und fügen ihre Pfade als Trainingseingabe hinzu.

Erstellen eines benutzerdefinierten Containers

Anstatt eine Laufzeitversion zu verwenden, können Sie einen Docker-Container erstellen, der Ihre Abhängigkeiten enthält. Weitere Informationen zur Verwendung von benutzerdefinierten Containern

    # Specifies base image and tag
    FROM image:tag
    WORKDIR /root

    # Installs additional packages
    RUN pip install pkg1 pkg2 pkg3

    # Downloads training data
    RUN curl https://example-url/path-to-data/data-filename --output /root/data-filename

    # Copies the trainer code to the docker image.
    COPY your-path-to/model.py /root/model.py
    COPY your-path-to/task.py /root/task.py

    # Sets up the entry point to invoke the trainer.
    ENTRYPOINT ["python", "task.py"]
    

PyPI-Paketabhängigkeiten einbeziehen

Sie können PyPI-Pakete und ihre Versionen mit dem normalen "setuptools"-Prozess als Abhängigkeiten des Trainerpakets angeben:

  1. Fügen Sie die Datei setup.py in das oberste Verzeichnis der Traineranwendung ein.
  2. Übergeben Sie beim Aufrufen von setuptools.setup in "setup.py" eine Liste der Abhängigkeiten und optional ihrer Versionen mit dem Parameter install_requires. Das Vorgehen wird in folgendem Beispiel für setup.py veranschaulicht:

        from setuptools import find_packages
        from setuptools import setup
    
        REQUIRED_PACKAGES = ['some_PyPI_package>=1.5',
                             'another_package==2.6']
    
        setup(
            name='trainer',
            version='0.1',
            install_requires=REQUIRED_PACKAGES,
            packages=find_packages(),
            include_package_data=True,
            description='Generic example trainer package with dependencies.')
        

AI Platform Training erzwingt die Neuinstallation von Paketen, sodass Sie Pakete im Image der Laufzeitversion durch neuere oder ältere Versionen überschreiben können.

Eigene Paketdateien hochladen

Sie können zusätzliche Paketdateien in die Trainingsjobanfrage einbinden. Sie laden die Pakete in Cloud Storage hoch und geben eine Liste der Pakete an, die auf jeder Trainingsinstanz installiert werden sollen. AI Platform Training installiert alle Pakete mit pip. Pakete, die für andere Paketmanager konzipiert sind, werden nicht unterstützt.

gcloud

Verwenden Sie das Flag --packages, wenn Sie den Befehl gcloud ai-platform jobs submit training ausführen. Geben Sie den Wert als eine durch Kommas getrennte Liste der Pfade zu allen zusätzlichen Paketen an. Zwischen den Einträgen in der Liste dürfen keine Leerzeichen stehen.

    gcloud ai-platform jobs submit training my_job \
        --staging-bucket gs://my-bucket \
        --package-path /path/to/my/project/trainer \
        --module-name trainer.task \
        --runtime-version 2.1 \
        --python-version 3.7 \
        --packages dep1.tar.gz,dep2.whl
    

Python

Nehmen Sie alle zusätzlichen Pakete in die Liste auf, die Sie als Wert für packageUris im Objekt TrainingInput verwenden.

    training_inputs = {'scaleTier': 'BASIC',
        'packageUris': ['gs://my/trainer/path/package-0.0.0.tar.gz',
                        'gs://my/dependencies/path/dep1.tar.gz',
                        'gs://my/dependencies/path/dep2.whl'],
        'pythonModule': 'trainer.task'
        'args': ['--arg1', 'value1', '--arg2', 'value2'],
        'region': 'us-central1',
        'jobDir': 'gs://my/training/job/directory',
        'runtimeVersion': '2.1',
        'pythonVersion': '3.7'}

        job_spec = {'jobId': my_job_name, 'trainingInput': training_inputs}
    

Benutzerdefinierte Versionen von TensorFlow für das Training angeben

Die Verwendung einer neueren Version von TensorFlow als letzte unterstützte Laufzeitversion in AI Platform Training ist für das Training möglich, nicht aber für die Vorhersage.

Wenn Sie eine TensorFlow-Version verwenden möchten, die noch nicht vollständig als AI Platform Training-Laufzeitversion unterstützt wird, schließen Sie diese mit einer der folgenden Methoden als benutzerdefinierte Abhängigkeit für Ihren Trainer ein:

  1. Geben Sie die TensorFlow-Version in der Datei setup.py als PyPI-Abhängigkeit an. Nehmen Sie sie so in die Liste der erforderlichen Pakete auf:

     REQUIRED_PACKAGES = ['tensorflow>=2.1']
        
  2. Erstellen Sie eine TensorFlow-Binärdatei aus Quellen und folgen Sie dabei der Anleitung für TensorFlow nur mit CPU-Unterstützung. Dieser Prozess liefert ein pip-Paket (eine WHL-Datei), das Sie in der Trainingsjobanfrage aufnehmen können, indem Sie es der Liste der Pakete hinzufügen.

Das Erstellen einer TensorFlow-Binärdatei, um diese als benutzerdefiniertes Paket einzuschließen, ist ein komplexerer Ansatz, hat aber den Vorteil, dass Sie beim Training des Modells die neuesten TensorFlow-Aktualisierungen verwenden können.

Weitere Informationen