Azure Machine Learning에 대한 Git 통합
Git는 프로젝트를 공유하고 공동 작업할 수 있는 인기 있는 버전 제어 시스템입니다. 이 문서에서는 Azure Machine Learning을 로컬 Git 리포지토리와 통합하여 학습 작업의 일부로 리포지토리, 분기 및 현재 커밋 정보를 추적하는 방법을 설명합니다.
Azure Machine Learning은 작업 추적을 위한 Git 리포지토리를 완벽하게 지원합니다. 리포지토리를 공유 작업 영역 파일 시스템에 직접 복제하거나, 로컬 워크스테이션에서 Git을 사용하거나, CI/CD(연속 통합 및 지속적인 배포) 파이프라인에서 Git을 사용할 수 있습니다.
로컬 Git 리포지토리의 원본 파일이 있는 Azure Machine Learning 학습 작업을 제출하면 리포지토리에 대한 정보가 학습 작업의 일부로 추적됩니다. 정보는 로컬 Git 리포지토리에서 제공되므로 특정 중앙 리포지토리에 연결되지 않습니다. GitHub, GitLab, Bitbucket 또는 Azure DevOps와 같은 Git 호환 서비스에서 리포지토리를 복제할 수 있습니다.
팁
Visual Studio Code를 사용하여 그래픽 사용자 인터페이스를 통해 Git과 상호 작용할 수 있습니다. Visual Studio Code를 사용하여 Azure Machine Learning 원격 컴퓨팅 인스턴스에 연결하려면 Azure Machine Learning과 통합된 Visual Studio Code 시작(미리 보기)을 참조하세요.
Visual Studio Code 버전 제어 기능에 대한 자세한 내용은 Visual Studio Code에서 버전 제어 사용 및 Visual Studio Code에서 GitHub 작업을 참조하세요.
작업 영역 파일 시스템의 Git 리포지토리
Azure Machine Learning은 작업 영역에 있는 모든 사용자에게 공유 파일 시스템을 제공합니다. Git 리포지토리를 이 파일 공유에 복제하는 가장 좋은 방법은 컴퓨팅 인스턴스를 만들고 터미널을 여는 방법입니다. 터미널에서 전체 Git 클라이언트에 액세스할 수 있으며 Git CLI를 사용하여 Git을 복제하고 작업할 수 있습니다. 자세한 내용은 Git CLI를 참조하세요.
GitHub, Azure Repos 또는 BitBucket 리포지토리와 같이 인증할 수 있는 모든 Git 리포지토리를 복제할 수 있습니다. 다른 사용자가 작업 분기에서 직접 충돌하지 않도록 리포지토리를 사용자 디렉터리에 복제하는 것이 가장 좋습니다.
컴퓨팅 인스턴스의 로컬 파일 시스템에 복제 또는 ~/cloudfiles/code/ 디렉터리에 탑재된 공유 파일 시스템에 복제 간에는 몇 가지 차이점이 있습니다. 일반적으로 로컬 파일 시스템에 복제하면 탑재된 파일 시스템에 복제하는 것보다 성능이 향상됩니다. 그러나 컴퓨팅 인스턴스를 삭제하고 다시 만들면 탑재된 공유 파일 시스템이 유지되는 동안 로컬 파일 시스템이 손실됩니다.
SSH를 사용하여 Git 리포지토리 복제
SSH(Secure Shell) 프로토콜을 사용하여 리포지토리를 복제할 수 있습니다. SSH를 사용하려면 SSH 키를 통해 SSH를 사용하여 Git 계정을 인증해야 합니다.
새 SSH 키 생성 및 저장
새 SSH 키를 생성하려면 Azure Machine Learning 스튜디오 Notebook 페이지로 이동하여 터미널을 열고 다음 명령을 실행하여 이메일 주소를 대체합니다.
ssh-keygen -t ed25519 -C "your_email@example.com"
이 명령은 다음 출력을 반환합니다.
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/azureuser/.ssh/id_ed25519):
이전 출력의 위치가 /home/azureuser/.ssh
인지 확인하거나 해당 위치로 변경한 다음 Enter 키를 누릅니다.
보안을 강화하려면 SSH 키에 암호를 추가하는 것이 가장 좋습니다. 다음 프롬프트에서 보안 암호를 입력합니다.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Enter 키를 누르면 ssh-keygen
명령이 제공된 이메일 주소를 레이블로 사용하여 새 SSH 키를 생성합니다. 키 파일은 컴퓨팅 인스턴스에 저장되며 컴퓨팅 인스턴스 소유자만 액세스할 수 있습니다.
Git 계정에 공개 키 추가
Git 계정에 공개 SSH 키를 추가해야 합니다. 키를 얻으려면 터미널 창에서 다음 명령을 실행합니다. 키 파일의 이름이 다른 경우 id_ed25519.pub
를 공개 키 파일 이름으로 대체합니다.
cat ~/.ssh/id_ed25519.pub
이 명령은 공개 키 파일의 내용을 표시합니다. 출력을 복사합니다.
팁
터미널 창에 복사하여 붙여넣으려면 운영 체제에 따라 다음과 같은 바로 가기 키를 사용합니다.
- Windows: 복사하려면 Ctrl+C 또는 Ctrl+Insert를 사용하고 붙여넣으려면 Ctrl+V 또는 Ctrl+Shift+V를 사용합니다.
- MacOS: 복사하려면 Cmd+C를 사용하고 붙여넣으려면 Cmd+V를 사용합니다.
일부 브라우저는 클립보드 권한을 제대로 지원하지 않을 수 있습니다.
Git 서비스에 따라 다음 지침을 사용하여 Git 계정에 SSH 키를 추가합니다.
SSH를 사용하여 Git 리포지토리 복제
Git 리포지토리를 복제하려면 리포지토리에서 SSH Git 복제 URL을 복사합니다. 터미널에서 git clone
을 실행한 다음 SSH Git 복제 URL을 실행합니다. 예시:
git clone git@example.com:GitUser/azureml-example.git
다음 예제와 같이 SSH는 서버의 SSH 지문을 표시하고 확인하도록 요청할 수 있습니다.
The authenticity of host 'github.com (000.00.000.0)' can't be established.
ECDSA key fingerprint is SHA256:0000000000000000000/00000000/00000000.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
SSH는 중간자(man-in-the-middle) 공격으로부터 보호하기 위해 알 수 없는 호스트에 연결할 때 이 지문을 표시합니다. 지문이 SSH 공개 키 페이지의 지문 중 하나와 일치하는지 확인해야 합니다. 호스트의 지문을 수락하면 지문이 변경되지 않는 한 SSH에서 다시 메시지를 표시하지 않습니다.
SSH는 다음 예제와 같은 응답을 표시합니다.
Cloning into 'azureml-example'...
Warning: Permanently added 'github.com,000.00.000.0' (ECDSA) to the list of known hosts.
Enter passphrase for key '/home/azureuser/.ssh/id_ed25519':
암호를 입력한 후 Git은 리포지토리를 복제하고 향후 Git 명령을 위해 SSH와 연결하도록 원본 원격을 설정합니다.
Git 리포지토리에서 제공되는 코드 추적
Python SDK 또는 Machine Learning CLI에서 학습 작업을 제출하면 모델을 학습하는 데 필요한 파일이 작업 영역에 업로드됩니다. 개발 환경에서 git
명령을 사용할 수 있는 경우 업로드 프로세스는 원본 파일이 Git 리포지토리에 저장되어 있는지 확인합니다.
이 경우 프로세스는 Git 리포지토리, 분기 및 현재 커밋 정보를 학습 작업의 일부로 업로드합니다. 해당 정보는 예측 도구, 기계 학습 파이프라인 또는 스크립트 실행을 사용하는 작업에 대해 다음 학습 작업 속성에 저장됩니다.
속성 | 값을 가져오는 Git 명령 | 설명 |
---|---|---|
azureml.git.repository_uri 또는 mlflow.source.git.repoURL |
git ls-remote --get-url |
리포지토리가 복제된 URI |
azureml.git.branch 또는 mlflow.source.git.branch |
git symbolic-ref --short HEAD |
작업을 제출한 활성 분기입니다. |
azureml.git.commit 또는 mlflow.source.git.commit |
git rev-parse HEAD |
작업을 위해 제출된 코드의 커밋 해시입니다. |
azureml.git.dirty |
git status --porcelain . |
분기 또는 커밋이 더티인 경우 True , 그렇지 않은 경우 false . |
개발 환경에서 git
명령을 사용할 수 없거나 학습 파일이 Git 리포지토리에 없는 경우 Git 관련 정보는 추적되지 않습니다.
팁
개발 환경에서 git
명령을 사용할 수 있는지 확인하려면 명령줄 인터페이스에서 git --version
명령을 실행합니다. Git이 설치되어 있고 경로에 있는 경우 git version 2.43.0
으로 유사한 응답을 받습니다. 개발 환경에 Git을 설치하는 방법에 대한 자세한 내용은 Git 웹 사이트를 참조하세요.
Git 정보 보기
Git 정보는 학습 작업의 속성에 JSON 코드로 저장됩니다. 기록된 Git 정보에는 다음 속성이 포함될 수 있습니다.
"azureml.git.repository_uri": "git@github.com:azure/<repo-name>",
"azureml.git.branch": "<branch-name>",
"azureml.git.commit": "<commit-id>",
"azureml.git.dirty": "<True/False>",
"mlflow.source.git.repoURL": "git@github.com:azure/<repo-name>",
"mlflow.source.git.branch": "<branch-name>",
"mlflow.source.git.commit": "<commit-id>",
이 정보는 Azure Portal, Python SDK 또는 Azure CLI를 사용하여 볼 수 있습니다.
Azure Portal
Azure Machine Learning 스튜디오 작업 영역의 작업 페이지에서 작업을 선택합니다. 작업 개요 페이지의 속성 섹션에서 모든 속성 보기의 원시 JSON을 선택합니다.
JSON에서 Git 속성을 찾습니다. 예를 들면 다음과 같습니다.
"properties": {
"mlflow.source.git.repoURL": "git@github.com:azure/azureml-examples",
"mlflow.source.git.branch": "main",
"mlflow.source.git.commit": "0000000000000000000000000000000000000000",
"azureml.git.dirty": "False",
...
},
Python SDK V2
학습 실행을 제출하면 작업 개체가 반환됩니다. 이 개체의 properties
특성에는 로깅된 Git 정보가 포함됩니다. 예를 들어 다음 명령을 실행하여 커밋 해시를 검색할 수 있습니다.
job.properties["mlflow.source.git.commit"]
Azure CLI V2
--query
인수를 통해 az ml job show
명령을 실행하여 Git 정보를 표시할 수 있습니다. 예를 들어 다음 쿼리는 mlflow.source.git.commit
속성 값을 검색합니다.
az ml job show --name my-job-id --query "{GitCommit:properties.azureml.git.commit} --resource-group my-resource-group --workspace-name my-workspace"