Azure ML을 사용하여 첫 번째 분산 PyTorch Lightning 모델 훈련


너무 길어서 읽을 수가 없어요.이 글은 PyTorch Lightning을 어떻게 사용하고 Azure Machine Learning을 사용하여 다중 GPU 모델을 훈련하는지 개술하였다.
만약 당신이 Azure 초보자라면, 아래의 링크를 사용하여 무료 구독을 시작할 수 있습니다.
Create your Azure free account today | Microsoft Azure

PyTorch Lightning이란 무엇입니까?



Pytork Lighting은 고성능 인공지능 연구에 사용되는 경량급 Pytork 포장이다.Lightning의 설계에는 PyTorch 모델의 개발 및 확장성을 단순화하는 4가지 원칙이 있습니다.
  • 최대 유연성 실현
  • 은 불필요한 템플릿 파일을 추상화하지만 필요할 때 접근할 수 있도록 합니다.
  • 시스템은 자체적으로 포함되어야 한다(즉, 최적화기, 계산 코드 등).
  • 딥러닝 코드는 연구 코드(Lightning Module), 엔지니어링 코드(삭제하고 교육자가 처리), 불필요한 연구 코드(로그 기록 등...리셋 중), 데이터(PyTorch 데이터 로딩 프로그램을 사용하거나 Lightning Data Module로 구성) 등 네 가지 유형으로 나뉘어야 한다.
  • 이 정도만 하면 여러 개의 GPU, TPU, CPU 심지어 16비트 정밀도에서 훈련을 할 수 있고 코드를 변경할 필요가 없다. 이것은 분포식 클라우드 컴퓨팅 서비스, 예를 들어 Azure 머신러닝을 이용하기에 매우 적합하다.
    PyTorchLightning/pytorch-lightning
    또한 PyTorch 조명 볼트는 사전 훈련을 거친 모형을 제공하여 이를 포장하고 조합하여 원형 연구 아이디어를 더욱 빨리 실현할 수 있다.
    PyTorchLightning/pytorch-lightning-bolts

    Azure 머신러닝이란 무엇입니까?



    Azure Machine Learning ( Azure ML )은 클라우드 기반의 서비스로 기계 학습 솔루션을 만들고 관리하는 데 사용된다.그것은 데이터 과학자와 기계 학습 엔지니어가 기존의 데이터 처리와 모델을 이용하여 기술과 구조를 개발하도록 돕는 데 목적을 두고 있다.
    Azure Machine Learning은 개발자와 데이터 과학자에게 기계 학습 작업 흐름에 필요한 도구를 제공합니다.
  • 개의 Azure 계산 실례로 Visual Studio 코드를 사용하여 온라인 액세스 또는 원격 링크를 할 수 있습니다.
  • What is an Azure Machine Learning compute instance? - Azure Machine Learning
  • Connect to compute instance in Visual Studio Code (preview) - Azure Machine Learning
  • 은 PyTorch, Tensorflow, ScikitLearn 및 Keras와 같은 머신러닝 라이브러리를 지원합니다.
  • azureml.train.estimator.Estimator class - Azure Machine Learning Python
  • 코드, 데이터, 모델 관리
  • Tutorial: Get started with machine learning - Python - Azure Machine Learning
  • 확장 가능한 분산 훈련 및 저렴한 우선 순위 GPU 계산
  • What is distributed training? - Azure Machine Learning
  • 자동 ML 및 슈퍼 매개 변수 최적화
  • Tune hyperparameters for your model - Azure Machine Learning
  • What is automated ML / AutoML - Azure Machine Learning
  • 용기 등록, Kubernetes 배치 및 MLOps 파이프
  • MLOps: ML model management - Azure Machine Learning
  • Deploy ML models to Kubernetes Service - Azure Machine Learning
  • 해석 가능한 도구와 데이터 표류 모니터링
  • Interpret & explain ML models in Python (preview) - Azure Machine Learning
  • Analyze and monitor for data drift on datasets (preview) - Azure Machine Learning
  • MLflow to track metrics and deploy models 또는 Kubeflow to build end-to-end workflow pipelines과 같은 외부 소스 오픈 서비스도 사용할 수 있습니다.
    AzureML 모범 사례 보기
  • Azure/azureml-examples
  • microsoft/bert-stack-overflow
  • PyTorch Lighting과 Azure ML의 장점을 통해 우리는 이 두 분야의 장점을 어떻게 충분히 활용하는지 예를 들어 설명할 수 있다.

    입문


    1단계 — Azure ML 작업공간 설정


    Portal에서 Azure ML 작업공간을 만들거나 Azure CLI 사용
    다음과 같이 Azure ML SDK를 사용하여 작업공간에 연결합니다.
    from azureml.core import Workspace
    ws = Workspace.get(name="myworkspace", subscription\_id='<azure-subscription-id>', resource\_group='myresourcegroup')
    

    2단계 — 다중 GPU 클러스터 설정


    Create compute clusters - Azure Machine Learning
    from azureml.core.compute import ComputeTarget, AmlCompute
    from azureml.core.compute\_target import ComputeTargetException
    
    # Choose a name for your GPU cluster
    gpu\_cluster\_name = "gpu cluster"
    
    # Verify that cluster does not exist already
    try:
     gpu\_cluster = ComputeTarget(workspace=ws, name=gpu\_cluster\_name)
     print('Found existing cluster, use it.')
    except ComputeTargetException:
     compute\_config = AmlCompute.provisioning\_configuration(vm\_size='Standard\_NC12s\_v3',
    max\_nodes=2)
     gpu\_cluster = ComputeTarget.create(ws, gpu\_cluster\_name, compute\_config)
    
    gpu\_cluster.wait\_for\_completion(show\_output=True)
    

    단계 3 — 환경 구성


    그룹에서 PyTorch Lighting 코드를 실행하려면 의존항을 설정해야 합니다. 간단한 yml 파일을 사용해서 실행할 수 있습니다.
    channels:
     - conda-forge
    dependencies:
     - python=3.6
     - pip
     - pip:
     - azureml-defaults
     - torch
     - torchvision
     - pytorch-lightning
    
    그리고 AzureML SDK를 사용하여 의존 항목 파일에서 환경을 만들고 원하는 Docker base 이미지에서 실행하도록 설정할 수 있습니다.
    **from**  **azureml.core**  **import** Environment
    
    env = Environment.from\_conda\_specification(environment\_name, environment\_file)
    
    _# specify a GPU base image_
    env.docker.enabled = **True**
    env.docker.base\_image = (
     "mcr.microsoft.com/azureml/openmpi3.1.2-cuda10.2-cudnn8-ubuntu18.04"
    )
    

    4단계 — 교육 스크립트


    실행할 트레이닝 스크립트와 매개변수, 환경 및 클러스터를 지정하기 위해 ScriptRunConfig를 생성합니다.
    우리는 PyTorch Lighting examples or our own experiments의 모든 예시 훈련 스크립트를 사용할 수 있다.

    5단계 — 실험 실행


    단일 노드의 GPU 훈련의 경우 훈련할 GPU 수량(일반적으로 집단 SKU의 GPU 수량에 해당)과 분포식 모드를 지정합니다. 이 예에서 분포식 데이터 병렬(DistributedDataParallel)("ddp")을 지정하고, PyTorch Lightning은 이를 각각 매개 변수인 GPU와 -distributed\U 백엔드로 사용하고자 합니다.자세한 내용은 Multi-GPU training 문서를 참조하십시오.
    **import**  **os**
     **from**  **azureml.core**  **import** ScriptRunConfig, Experiment
    
    cluster = ws.compute\_targets[cluster\_name]
    
    src = ScriptRunConfig(
     source\_directory=source\_dir,
     script=script\_name,
     arguments=["--max\_epochs", 25, "--gpus", 2, "--distributed\_backend", "ddp"],
     compute\_target=cluster,
     environment=env,
    )
    
    run = Experiment(ws, experiment\_name).submit(src)
    run
    
    다음 SDK 명령을 사용하여 실행 로그와 세부 정보를 실시간으로 볼 수 있습니다.
    **from**  **azureml.widgets**  **import** RunDetails
    
    RunDetails(run).show()
    run.wait\_for\_completion(show\_output= **True** )
    

    다음 단계와 미래 일자리


    현재 우리는 이미 첫 번째 Azure ML PyTorch 조명 실험을 세웠다.여기에는 몇 가지 고급 시도 절차가 있는데, 우리는 뒤의 댓글에서 그것들을 더욱 깊이 있게 소개할 것이다.

    1. Azure 데이터 저장소에서 데이터 세트 사용자 정의 링크


    이 예는 PyTorch 데이터 집합의 MNIST 데이터 집합을 사용했습니다. 만약에 우리가 데이터에 대한 교육을 하려면 Azure ML 데이터 저장과 통합해야 합니다. 이것은 상대적으로 간단합니다. 우리는 후속 글에서 어떻게 이 점을 하는지 보여 드리겠습니다.
    Create Azure Machine Learning datasets to access data - Azure Machine Learning

    2. AML을 위한 사용자 정의 PyTorch Lightning Logger를 만들고 Hyperdrive를 사용하여 최적화


    이 예에서 우리의 모든 모델 로그는 Azure ML 드라이버에 저장됩니다.그러나 Azure ML 실험에는 더 강력한 로그 기록 도구가 있어 PyTorch lightning에 직접 집적할 수 있으며 아주 적은 작업만 하면 된다.다음 글에서 우리는 이 점을 어떻게 하는지, 그리고 우리가 HyperDrive를 통해 무엇을 얻었는지 보여줄 것이다.
  • nateraw/pytorch-lightning-azureml
  • [DRAFT] Add logger for Azure Machine Learning by dkmiller · Pull Request #223 · PyTorchLightning/pytorch-lightning-bolts
  • 3. PyTorch Lighting Horovod 백엔드의 다중 노드 분산 계산


    이 예에서 우리는 하나의 노드 집단에 있는 모든 GPU를 어떻게 활용하는지 보여 줍니다. 다음 글에서는 PyTorch Lightings Horovod 백엔드를 집단 사이에 분포하는 방법을 보여 드리겠습니다.

    4. 우리의 모델을 생산에 배치


    이 예에서 우리는 분포식 PyTorch 조명 모델을 어떻게 훈련하는지 보여주었고 다음 글에서 이 모델을 AKS 서비스로 배치하는 방법을 보여 드리겠습니다.
    How and where to deploy models - Azure Machine Learning
    만약 당신이 이 글을 좋아한다면, 생산 기계 학습의 9가지 기교에 관한 나의 게시물을 보시고, 언제든지 당신의 친구와 공유하세요!

    감사를 드리다


    저는 Azure ML팀의 Minna Xiao에 경의를 표하고 그녀가 Azure의 PyTorch Lighting 등 개원 프레임워크를 통해 개발자들에게 더 좋은 경험을 가져다 줄 수 있도록 지원해 주셔서 감사합니다.

    저자 정보


    역사에 대한 열정이 충만한 인공지능 연구원으로 신기술과 계산의학에 종사한다.마이크로소프트 클라우드 개발자 제창팀의 개원 엔지니어로서 그는 이스라엘 첨단 기술 지역사회와 협력하여 기록, 개원 및 세계 다른 곳과 공유하는 게임 규칙을 바꾸는 기술을 통해 현실 세계의 문제를 해결한다.

    좋은 웹페이지 즐겨찾기