런타임 버전 관리

AI Platform Training은 이미지를 사용하여 클라우드에서 학습 및 예측 요청을 제공하도록 VM을 구성합니다. 이러한 이미지에는 기본 운영체제, 핵심 기술 패키지, pip 패키지(Python 라이브러리), 운영체제 패키지가 포함됩니다. 주기적인 업그레이드를 통해 이미지에 새로운 개선사항과 기능이 추가됩니다. AI Platform Training 버전 관리를 사용하면 모델에 사용할 올바른 구성을 선택할 수 있습니다.

버전 관리에 대한 중요 참고 사항

  • 새 런타임 버전으로 전환할 때는 업데이트의 중요도(주 업데이트 또는 부 업데이트)에 상관없이 항상 학습 작업과 모델을 철저히 테스트해야 합니다.
  • AI Platform Training은 출시 후 12개월 동안 각 런타임 버전을 지원합니다. 12개월이 지나면 이 런타임 버전을 사용하는 학습 작업, 일괄 예측 작업, 모델 버전을 더 이상 만들 수 없습니다.

    런타임 버전 출시로부터 24개월이 지나면 AI Platform Prediction이 해당 런타임 버전을 사용하는 모든 모델 버전을 삭제합니다.

    런타임 버전의 사용 가능 기간에 대해 자세히 알아보세요.

버전 번호 이해

AI Platform Training에서 사용되는 이미지는 AI Platform Training 런타임 버전을 따릅니다. 런타임 버전에는 다음 형식이 사용됩니다.

major_version.minor_version

주 버전 및 부 버전

다음 중 하나 이상이 포함된 새로운 주 버전 및 부 버전이 주기적으로 생성됩니다.

  • 출시 대상:
    • 운영체제
    • 지원되는 머신러닝 프레임워크
  • AI Platform Training 기능 변경 또는 업데이트

새로운 주 버전은 브레이킹 체인지를 포함할 수 있으며, 이로 인해 이전 버전을 대상으로 작성된 코드를 업데이트해야 할 수 있습니다. 부 버전을 새로 출시할 때는 버전 변경에 따른 호환성 문제가 발생하지 않아야 하며, 동일 주 버전으로 출시된 모든 이전 부 버전과 호환되어야 합니다.

런타임 버전 선택

사용 중인 머신러닝 프레임워크 및 기타 패키지의 최신 버전을 지원하는 런타임 버전을 선택해야 합니다.

scikit-learn과 XGBoost를 지원하는 가장 오래된 AI Platform Training 런타임 버전은 버전 1.13입니다.

각 버전의 세부정보는 AI Platform Training 버전 목록에서 확인할 수 있습니다.

런타임 버전 설정

학습 작업 요청을 제출할 때는 런타임 버전을 설정해야 합니다.

gcloud

gcloud ai-platform jobs submit training 명령어를 실행할 때 --runtime-version 플래그를 사용합니다.

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.11 \
    --python-version 3.7

Python

학습 작업 요청을 정의할 때 runtimeVersion을 설정합니다.

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.11',
    'pythonVersion': '3.7'}

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

TrainingInput API에서 학습 작업 제출에 대한 자세한 내용을 참조하세요.

Python 버전 설정

Python 3.7은 런타임 버전 1.15 이상에서 사용할 수 있습니다.

이전 Python 버전은 특정 런타임 버전에서 사용할 수 있습니다.

  • AI Platform Training 런타임 버전 1.13~1.14를 사용할 때는 Python 3.5를 사용할 수 있습니다.

  • Python 2.7은 런타임 버전 1.15 및 이전 버전에서 사용할 수 있습니다.

다음 예시에서는 학습을 위해 Python 3.7을 지정하는 방법을 보여줍니다. 비슷한 방식으로 Python 3.5 또는 Python 2.7을 지정할 수 있습니다.

gcloud

Python 3.7을 사용하여 학습시키려면 --python-version 3.7을 지정하고 런타임 버전 1.15 이상을 사용합니다.

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.11

Python

Python 3.7을 사용하여 학습시키려면 runtimeVersion'1.15' 이상으로 지정하고 pythonVersion'3.7'로 설정합니다.

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.11',
    'pythonVersion': '3.7'}

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

TrainingInput API에서 학습 작업 제출에 대한 자세한 내용을 참조하세요.

커스텀 패키지 사용

학습 인스턴스에서 패키지를 변경하는 방법에는 다음 세 가지가 있습니다.

  • 이미지에 종속 항목을 사전 설치하는 커스텀 컨테이너 빌드
  • PyPI 패키지를 트레이너 패키지의 종속 항목으로 지정
  • 패키지 파일(tarball)을 수동으로 업로드하고 해당 경로를 학습 입력으로 포함

커스텀 컨테이너 빌드

런타임 버전을 사용하는 대신 종속 항목을 포함할 Docker 컨테이너를 빌드할 수 있습니다. 커스텀 컨테이너 사용 방법에 대해 자세히 알아보세요.

# 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 패키지 종속 항목 포함

설정 도구의 일반적인 프로세스를 사용하여 PyPI 패키지 및 해당 버전을 트레이너 패키지의 종속 항목으로 지정할 수 있습니다.

  1. 트레이너 애플리케이션의 최상위 디렉터리에 setup.py 파일을 포함합니다.
  2. setup.py에서 setuptools.setup을 호출할 때 종속 항목 및 선택적으로 버전을 install_requires 매개변수로 전달합니다. 다음은 이 절차를 보여주는 setup.py 파일의 예시입니다.

    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이 패키지를 강제로 재설치하기 때문에 개발자는 런타임 버전의 이미지에 포함된 패키지를 새 버전 또는 이전 버전으로 재정의할 수 있습니다.

자체 패키지 파일 업로드

학습 작업 요청을 수행할 때 추가 패키지 파일을 포함할 수 있습니다. Cloud Storage로 패키지를 업로드하고 각 학습 인스턴스에 설치할 패키지 목록을 지정합니다. AI Platform Training은 pip를 사용하여 모든 패키지를 설치합니다. 다른 패키지 관리자용으로 설계된 패키지는 지원되지 않습니다.

gcloud

gcloud ai-platform jobs submit training 명령어를 실행할 때 --packages 플래그를 사용합니다. 모든 추가 패키지 경로의 쉼표로 구분된 목록으로 값을 설정합니다. 목록의 항목 사이에는 공백이 포함되지 않아야 합니다.

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.11 \
    --python-version 3.7 \
    --packages dep1.tar.gz,dep2.whl

Python

TrainingInput 객체의 packageUris 값에 사용되는 목록에 모든 패키지를 추가합니다.

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.11',
    'pythonVersion': '3.7'}

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

학습용으로 TensorFlow 커스텀 버전 지정

AI Platform Training에서 지원되는 가장 최신 런타임 버전보다 더 최근 버전인 TensorFlow는 학습에는 사용할 수는 있지만 예측에는 사용할 수 없습니다.

정식 AI Platform Training 런타임 버전에서 아직 지원되지 않는 TensorFlow 버전을 사용하려면 다음 방법 중 하나를 사용하여 해당 버전을 트레이너의 커스텀 종속 항목으로 포함합니다.

  1. setup.py 파일에서 TensorFlow 버전을 PyPI 종속 항목으로 지정합니다. 다음과 같이 필수 패키지 목록에 포함합니다.

     REQUIRED_PACKAGES = ['tensorflow>=2.11']
    
  2. CPU만 지원하는 텐서플로우 안내에 따라 소스에서 텐서플로우 바이너리를 빌드합니다. 이 프로세스로 생성되는 pip 패키지(.whl 파일)를 패키지 목록에 추가하여 학습 작업 요청에 포함할 수 있습니다.

텐서플로우 바이너리를 빌드하여 커스텀 패키지로 포함하는 방법은 더 복잡하기는 하지만 모델을 학습시킬 때 가장 최신 텐서플로우 업데이트를 사용할 수 있다는 장점이 있습니다.

다음 단계