Skip to main content

GitHub Copilot에 대한 사용자 지정 모델 만들기

조직의 리포지토리에 있는 코드를 기반으로 사용자 지정 모델을 만들어 Copilot 코드 완성을 미세 조정할 수 있습니다.

누가 이 기능을 사용할 수 있나요?

Owners of organizations enrolled in the 공개 미리 보기.

The organization must belong to an enterprise with a Copilot Enterprise subscription.

Note

GitHub Copilot Enterprise에 대한 사용자 지정 모델은 공개 미리 보기에 있으며 변경될 수 있습니다. 공개 미리 보기 중에 사용자 지정 모델을 만들거나 사용하기 위해 공개 미리 보기에 등록된 Copilot Enterprise 고객에게는 추가 비용이 없습니다.

전제 조건

사용자 지정 모델을 학습하려는 코드는 GitHub에서 조직 소유의 리포지토리에서 호스트되어야 합니다.

제한 사항

  • 공개 미리 보기의 경우 기업은 단일 조직에 하나의 사용자 지정 모델을 배포할 수 있습니다.
  • 사용자 지정 모델을 기반으로 하는 코드 완성 제안은 사용자 지정 모델이 배포된 조직에서 Copilot Enterprise 구독을 받은 관리되는 사용자만 사용할 수 있습니다. 자세한 내용은 "Enterprise Managed Users 정보"을(를) 참조하세요.
  • 사용자 지정 모델은 GitHub Copilot Chat에 의해 응답에 제안된 코드에는 사용되지 않습니다.

Copilot 사용자 지정 모델 정보

기본적으로 GitHub Copilot은(는) 많은 수의 공용 코드 리포지토리에서 학습된 대규모 언어 모델을 사용하므로 다양한 컨텍스트에서 광범위한 프로그래밍 언어에 대한 코드 완성을 제공할 수 있습니다. 사용자 고유의 코드에서 특별히 학습하는 사용자 지정 대규모 언어 모델을 만들기 위한 기준으로 이 모델을 사용할 수 있습니다. 이 프로세스를 미세 조정이라고도 합니다.

사용자 지정 모델을 만들면 GitHub Copilot을(를) 사용하여 다음과 같은 코드 완성 제안을 표시할 수 있습니다.

  • 사용자 고유의 지정된 리포지토리의 코드를 기반으로 합니다.
  • 독점 또는 덜 공개적으로 표현된 프로그래밍 언어용으로 생성됩니다.
  • 조직의 코딩 스타일 및 지침에 따라 조정됩니다.

다음과 같은 기능이 제공됩니다.

  • 개인 설정 - Copilot에는 사용 가능한 모듈, 함수 및 내부 라이브러리를 포함하여 코드베이스에 대한 자세한 지식이 있습니다. 사용자 지정 모델은 코드가 기본 모델을 학습하는 데 사용되는 광범위한 코드의 일반적이지 않은 경우에 특히 도움이 될 수 있습니다.
  • 효율성 및 품질 - Copilot은(는) 오류를 줄이고 코드를 더 빠르게 작성할 수 있도록 더 우수한 기능을 제공합니다
  • 개인 정보 보호 - 사용자 지정 모델의 교육 프로세스, 호스팅 및 추론은 조직에 안전하고 비공개입니다. 데이터는 항상 사용자의 데이터로 유지되고, 다른 고객의 모델을 학습하는 데 사용되지 않으며, 사용자 지정 모델은 공유되지 않습니다.

모델 만들기 정보

현재 공개 미리 보기에서는 엔터프라이즈의 한 조직만 사용자 지정 모델을 만들 수 있습니다.

사용자 지정 모델을 만들 수 있는 조직의 소유자로서 모델을 학습하는 데 사용할 조직의 리포지토리를 선택할 수 있습니다. 조직의 하나, 여러 또는 모든 리포지토리에서 모델을 학습시킬 수 있습니다. 모델은 선택한 리포지토리의 기본 분기 콘텐츠에 대해 학습됩니다. 필요에 따라 특정 프로그래밍 언어로 작성된 코드만 학습에 사용되도록 지정할 수 있습니다. 사용자 지정 모델은 해당 파일 형식이 학습에 사용되었는지 여부에 관계없이 모든 파일 형식에서 코드 완성 제안을 생성하는 데 사용됩니다.

모델을 학습할 때 원격 분석 데이터(예: 사용자가 입력한 프롬프트 및 Copilot에서 생성된 제안)를 사용할지 여부를 선택할 수도 있습니다. 자세한 내용은 이 문서의 뒷부분에 있는 "사용자 지정 모델에 대한 원격 분석 데이터 수집 및 사용량"을 참조하세요.

시작되면 사용자 지정 모델 만들기를 완료하는 데 많은 시간이 걸립니다. 조직의 설정에서 학습 진행률을 확인할 수 있습니다. 모델 만들기가 완료되거나 완료되지 않으면 모델 학습을 시작한 사용자에게 이메일로 알림을 받습니다.

모델 만들기에 실패하면 Copilot은(는) 코드 완성 제안을 생성하기 위해 현재 모델을 계속 사용합니다.

모델 사용량 정보

사용자 지정 모델이 성공적으로 생성되면 사용자 지정 모델이 배포된 조직에서 액세스 권한을 보유한 엔터프라이즈의 모든 관리되는 사용자에게 사용자 지정 모델을 사용하여 생성된 코드 완성 제안이 표시되기 시작합니다. 사용자 지정 모델은 코드가 있는 위치에 관계없이 사용자가 편집하는 모든 코드에 항상 사용됩니다. 사용자는 표시되는 코드 완성 제안을 생성하는 데 사용되는 모델을 선택할 수 없습니다.

사용자 지정 모델의 이점을 얻을 수 있는 경우

사용자 지정 모델의 가치가 돋보이는 환경은 다음과 같습니다.

  • 독점적이거나 덜 공개적으로 표현된 프로그래밍 언어
  • 내부 라이브러리 또는 사용자 지정 프레임워크
  • 사용자 지정 표준 및 회사별 코딩 사례

하지만 표준화된 환경에서도 미세 조정을 통해 Copilot 코드 완성도를 조직의 확립된 코딩 관행 및 표준에 더 가깝게 맞출 수 있습니다.

사용자 지정 모델의 효과 평가

일부 코딩 환경에서는 미세 조정을 통해 더 많은 이점을 얻을 수 있지만, 코드베이스의 특정 동작과 사용자 지정 모델에서 얻는 결과의 품질 간에 확실한 상관관계가 있는 것은 아닙니다. 사용자 지정 모델을 구현하기 전과 후에 GitHub Copilot 코드 완성 제안의 사용 및 만족도 수준을 평가하는 것이 좋습니다.

사용자 지정 모델을 구현하기 전과 후의 API 및 개발자 설문조사 결과를 비교하면 사용자 지정 모델의 효과를 파악할 수 있습니다.

사용자 지정 모델 만들기

조직 설정을 사용하여 사용자 지정 대규모 언어 모델을 만들 수 있습니다.

  1. GitHub의 오른쪽 위 모서리에서 프로필 사진을 선택하고 조직을 클릭합니다.

  2. 조직 옆에 있는 설정을 클릭합니다.

  3. 왼쪽 사이드바에서 Copilot, 사용자 지정 모델을 차례로 클릭하세요.

  4. "사용자 지정 모델" 페이지에서 새 사용자 지정 모델 학습을 클릭합니다.

  5. "리포지토리 선택"에서 선택한 리포지토리 또는 모든 리포지토리를 선택합니다.

  6. 선택한 리포지토리를 선택한 경우 교육에 사용할 리포지토리를 선택한 다음 적용을 클릭합니다.

  7. 선택적으로 특정 프로그래밍 언어로 작성된 코드에 대해서만 모델을 학습시키려면 "언어 지정"에서 포함하려는 언어의 이름을 입력합니다. 표시되는 목록에서 필요한 언어를 선택합니다. 포함할 각 언어에 대해 프로세스를 반복합니다.

  8. 모델의 성능을 개선하려면 프롬프트 및 제안의 데이터 포함이라는 레이블이 지정된 확인란을 선택합니다.

    Note

    확인란을 선택할 수 없는 경우 조직의 설정에서 사용자 지정 모델에 대한 원격 분석 데이터 수집 정책이 비활성화되었음을 나타냅니다. 조직의 정책을 변경하는 방법에 대한 자세한 내용은 "Managing policies for Copilot in your organization" 항목을 참조하세요.

    이 옵션을 선택하면 Copilot에서 사용자가 제출한 프롬프트 및 생성된 코드 완성 제안에 대한 데이터를 수집할 수 있습니다. 충분한 데이터가 수집되면 Copilot은(는) 이를 모델 학습 프로세스의 일부로 사용하여 보다 효과적인 모델을 생성할 수 있습니다.

    자세한 내용은 이 문서의 뒷부분에 있는 "사용자 지정 모델에 대한 원격 분석 데이터 수집 및 사용량"을 참조하세요.

  9. 새 사용자 지정 모델 만들기를 클릭합니다.

모델 만들기 진행률 확인

조직 설정에서 모델 생성이 어떻게 진행 중인지 확인할 수 있습니다.

  1. Copilot 사용자 지정 모델에 대한 조직의 설정으로 이동합니다. 위의 "사용자 지정 모델 만들기"를 참조하세요.

  2. 모델을 처음 학습할 때 표시되는 페이지에는 학습 결과가 표시됩니다.

    첫 번째 학습이 아닌 경우 현재 및 이전 학습 시도가 나열됩니다. 현재 학습 프로세스의 세부 정보를 보려면 첫 번째 줄임표 단추(...)를 클릭한 다음 학습 세부 정보를 클릭합니다.

학습 실패 이유

다음과 같은 다양한 이유로 모델 학습이 실패할 수 있습니다.

  • 데이터 또는 대화가 아닌 데이터가 부족합니다. 학습을 위해 제공된 데이터가 부족하거나 데이터의 복제가 너무 많으면 미세 조정이 불안정해질 수 있습니다.
  • 차별화되지 않은 데이터입니다. 데이터가 기본 모델이 학습된 공개 데이터와 충분히 다르지 않은 경우 학습이 실패하거나 사용자 지정 모델의 코드 완성 제안 품질이 약간만 향상될 수 있습니다.
  • 데이터 전처리 단계에서 예기치 않은 파일 형식 및 형식이 발생하여 실패할 수 있습니다. 학습을 위해 특정 파일 유형만 지정하는 것도 하나의 해결책이 될 수 있습니다.

사용자 지정 모델 재학습 또는 삭제

조직 소유자 조직의 설정 페이지에서 사용자 지정 모델을 업데이트하거나 삭제할 수 있습니다.

모델을 다시 학습하면 학습을 위해 선택한 리포지토리에 추가된 새 코드를 포함하도록 업데이트됩니다. 일주일에 한 번 모델을 다시 학습할 수 있습니다.

  1. Copilot 사용자 지정 모델에 대한 조직의 설정으로 이동합니다. 위의 "사용자 지정 모델 만들기"를 참조하세요.
  2. 모델 학습 페이지에서 첫 번째 줄임표 버튼(...)을 클릭한 다음 모델 다시 학습 또는 모델 삭제를 클릭합니다.

모델을 다시 학습하는 경우 Copilot은(는) 새 모델이 준비될 때까지 현재 모델을 계속 사용하여 코드 완성 제안을 생성합니다. 새 모델이 준비되면 조직에서 Copilot Enterprise을(를) 구독하는 모든 관리되는 사용자에 대한 코드 완성 제안에 자동으로 사용됩니다.

사용자 지정 모델을 삭제하는 경우 Copilot은(는) 조직에서 Copilot을(를) 구독하는 모든 사용자에 대한 코드 완성 제안을 생성하기 위해 기본 모델을 사용합니다.

사용자 지정 모델에 대한 원격 분석 데이터 수집 및 사용량

사용자 지정 모델을 만들 때 GitHub에서 모델 학습을 위해 원격 분석 데이터를 수집하도록 선택할 수 있습니다. 이 데이터는 모델이 생성할 수 있는 코드 완성 제안의 품질을 향상시키는 데 사용됩니다.

수집되는 원격 분석 데이터는 무엇인가요?

  • 프롬프트: 여기에는 열려 있는 파일의 컨텍스트를 포함하여 Copilot 확장자를 통해 언어 모델에 전송되는 모든 정보가 포함됩니다.
  • 제안: Copilot에서 생성하는 코드 완성 제안입니다.
  • 코드 조각: 제안이 수락된 후 30초 후에 코드의 스냅샷으로, 제안이 코드베이스에 통합되는 방법을 캡처합니다. 이렇게 하면 최종 통합 전에 제안이 있는 그대로 수락되었는지 또는 사용자가 수정했는지 확인하는 데 도움이 됩니다.

원격 분석 데이터는 어떻게 사용됩니까?

원격 분석 데이터는 주로 Copilot 사용자 지정 모델을 미세 조정하여 조직의 코딩 패턴을 더 잘 이해하고 예측하는 데 사용됩니다. 이는 특히 다음에 유용합니다.

  • 모델 정확도 향상: 수집된 원격 분석을 분석하여 Copilot은(는) 사용자 지정 모델을 구체화하여 향후 코딩 제안의 관련성과 정확도를 높입니다.
  • 성능 모니터링: 원격 분석 데이터를 통해 GitHub은(는) 사용자 지정 모델이 기본 모델과 비교하여 얼마나 잘 수행되고 있는지 모니터링하여 지속적인 개선을 가능하게 합니다.
  • 피드백 루프: 데이터는 GitHub이(가) 피드백 루프를 생성하여 모델이 실제 사용을 통해 학습하고 시간이 지남에 따라 특정 코딩 환경에 맞게 조정하는 데 도움이 됩니다.

데이터 스토리지 및 처리

  • 데이터 스토리지: 수집된 모든 원격 분석 데이터는 안전하고 제한된 환경인 Copilot 데이터 저장소에 저장됩니다. 데이터는 암호화되고 격리되어 무단 액세스를 방지합니다.
  • 보존 기간: 원격 분석 데이터는 28일 동안 보존됩니다. 이 기간이 지나면 GitHub의 시스템에서 데이터가 자동으로 삭제되어 최근 데이터와 관련 데이터만 모델 학습 및 개선에 사용됩니다.

개인정보 보호 및 데이터 보안

GitHub은(는) 조직의 데이터가 비공개로 안전하게 유지되도록 하기 위해 최선을 다하고 있습니다.

  • 단독 사용: 조직에서 수집된 원격 분석 데이터는 사용자 지정 모델 학습에만 사용되며 다른 조직과 공유되거나 다른 고객의 모델을 학습하는 데 사용되지 않습니다.
  • 데이터 유출 방지: GitHub은(는) 엄격한 데이터 격리 프로토콜을 구현하여 서로 다른 조직의 데이터 간의 교차 오염을 방지합니다. 즉, 소유 코드 및 정보는 다른 조직이나 개인에 노출되지 않도록 보호됩니다.

중요 사항

  • 원격 분석 옵트인: 원격 분석 데이터 수집 참여는 선택 사항이며 조직의 관리 정책을 통해 제어됩니다. 원격 분석 데이터는 사용자 지정 모델 학습에 대해 명시적으로 사용하도록 설정된 경우에만 수집됩니다.

  • 잠재적 위험: GitHub은(는) 데이터 유출을 방지하기 위해 광범위한 조치를 취하지만, 내부 링크 또는 이름과 같은 중요한 데이터가 원격 분석에 포함되고 이후에 학습에 사용될 수 있는 상황이 있습니다. 이러한 위험을 최소화하기 위해 학습을 위해 제출하는 데이터를 검토하고 필터링하는 것이 좋습니다.

    데이터 처리 방법에 대한 자세한 내용은 GitHub Copilot 보안 센터를 참조하거나 GitHub의 데이터 보호 계약을 검토하세요.