GitHub Copilot용 AI 모델 및 LLM을 평가하는 방법

GitHub Copilot용 AI 모델 및 LLM을 평가하는 방법

요즘에는 선택할 수 있는 AI 모델이 너무 많습니다. OpenAI, Google 및 Anthropic의 독점 기반 모델부터 Meta 및 Mistral과 같은 더 작고 개방적인 옵션까지. 즉시 최신 모델로 넘어가고 싶은 유혹이 듭니다. 그러나 모델이 최신이라고 해서 해당 사용 사례에 더 나은 성능을 발휘한다는 의미는 아닙니다.

우리는 최근 Anthropic의 Claude 3.5 Sonnet, Google의 Gemini 1.5 Pro, OpenAI의 o1-preview 및 o1-mini에 대한 지원을 추가하여 GitHub Copilot에서 사용 가능한 모델을 확장했습니다. GitHub Copilot에 모델을 추가하는 동안 성능, 품질 및 안전이 항상 최우선적으로 고려되었습니다. 이 기사에서는 GitHub Copilot 팀이 실행하는 테스트인 오프라인 평가에 중점을 두고 AI 모델을 평가한 경험 중 일부를 공유하겠습니다. ~ 전에 생산 환경을 변경합니다. 우리의 경험이 귀하의 평가에 도움이 되기를 바랍니다.

AI 모델 평가란 무엇인가요?

AI 모델은 코드, 알고리즘 및 훈련 데이터를 결합하여 어떤 방식으로든 인간 지능을 시뮬레이션하는 시스템입니다. GitHub Copilot은 사용자에게 대규모 언어 모델(LLM)이라고 알려진 인간 언어에 대해 훈련된 다양한 AI 모델을 사용할 수 있는 선택권을 제공합니다. OpenAI의 모델은 ChatGPT의 인기로 인해 가장 잘 알려진 LLM 중 일부이지만 Claude, Gemini 및 Meta의 Llama 모델과 같은 다른 모델도 점점 더 인기를 얻고 있습니다.

AI 모델 평가는 이러한 모델의 성능, 품질, 안전성을 평가하는 것입니다. 평가에는 자동화된 테스트와 수동 사용이 모두 포함될 수 있습니다. 다양한 프레임워크와 벤치마킹 도구가 있지만 일반적으로 우리는 자체 평가 도구를 구축합니다.

자동화된 테스트를 통해 대규모 평가가 가능합니다. 모델이 수많은 작업에서 얼마나 잘 수행되는지 확인할 수 있습니다. 단점은 결과를 평가하기 위해 객관적인 기준이 필요한 경향이 있다는 것입니다. 수동 테스트를 사용하면 출력 품질과 정확성을 보다 주관적으로 평가할 수 있지만 시간이 더 많이 소요됩니다. 두 가지 접근 방식을 결합하면 일화적인 증거에 전적으로 의존하거나 수천 개의 응답을 수동으로 평가하는 데 엄청난 시간을 소비하지 않고도 응답의 주관적인 품질을 파악할 수 있습니다.

코드 품질 테스트 자동화

우리는 4,000개 이상의 오프라인 테스트를 실행하며, 대부분은 자동화된 CI 파이프라인의 일부입니다. 또한 카나리아 테스트와 유사한 실시간 내부 평가를 수행하여 여러 Hubber를 전환하여 새 모델을 사용합니다. 우리는 잠재적인 새 모델뿐만 아니라 GitHub Copilot의 모든 주요 변경 사항을 이러한 방식으로 테스트합니다.

여기서는 오프라인 테스트에 중점을 둘 것입니다. 예를 들어, 코드베이스를 평가하고 수정하는 능력을 기준으로 잠재적인 모델을 평가합니다. 우리는 일련의 CI 테스트를 통과한 약 100개의 컨테이너화된 저장소 컬렉션을 보유하고 있습니다. 테스트에 실패하도록 해당 리포지토리를 수정한 다음, 실패한 테스트를 다시 통과하기 위해 모델이 코드베이스를 수정할 수 있는지 확인합니다.

우리는 다양한 프로그래밍 언어와 프레임워크에서 최대한 다양한 시나리오를 생성합니다. 또한 우리가 지원하는 다양한 버전의 언어를 사용하는 것을 포함하여 실행하는 테스트 수를 지속적으로 늘리고 있습니다. 이 작업에는 많은 시간이 걸리지만 모델의 품질을 평가하는 가장 좋은 방법입니다.

AI를 사용하여 AI 테스트

GitHub Copilot은 코드 생성 이상의 작업을 수행합니다. Copilot Chat은 코드에 대한 질문에 답하고, 문제 해결을 위한 다양한 접근 방식을 제안하는 등의 작업을 수행할 수 있습니다. 우리는 모델의 채팅 기능 품질을 평가하는 데 사용하는 1,000개 이상의 기술 질문 모음을 보유하고 있습니다. 이들 중 일부는 자동으로 쉽게 평가할 수 있는 간단한 참/거짓 질문입니다. 그러나 더 복잡한 질문의 경우 다른 LLM을 사용하여 수동 테스트를 통해 달성할 수 있는 것 이상으로 노력을 확장하기 위해 평가 중인 모델에서 제공되는 답변을 확인합니다.

우리는 작업 전반에 걸쳐 일관된 평가를 보장하기 위해 이러한 목적으로 좋은 성능이 알려진 모델을 사용합니다. 또한 평가 시나리오에서 이 LLM의 출력을 정기적으로 감사하여 올바르게 작동하는지 확인합니다. 답변을 평가하는 데 사용하는 LLM이 인간 검토자와 일치하고 많은 요청에 대해 일관되게 수행되는지 확인하는 것은 어려운 일입니다.

또한 우리는 매일 생산 모델에 대해 이러한 테스트를 실행합니다. 성능 저하가 확인되면 감사를 통해 모델이 예전만큼 성능이 좋지 않은 이유를 알아냅니다. 때로는 우리가 기대하는 품질 수준으로 돌아가기 위해 일부 프롬프트를 수정하는 등 변경 작업을 수행해야 하는 경우도 있습니다.

테스트 실행

우리 설정의 멋진 점 중 하나는 제품 코드를 변경하지 않고도 새 모델을 테스트할 수 있다는 것입니다. 코드 완성 기능이 사용하는 인프라에 프록시 서버가 내장되어 있습니다. 클라이언트 측에서 어떤 종류의 변경도 하지 않고도 프록시 서버가 응답을 위해 호출하는 API를 쉽게 변경할 수 있습니다. 이를 통해 제품 코드를 변경하지 않고도 새 모델을 신속하게 반복할 수 있습니다.

이러한 모든 테스트는 주로 GitHub Actions를 사용하여 구축된 자체 사용자 지정 플랫폼에서 실행됩니다. 그런 다음 결과는 Apache Kafka 및 Microsoft Azure와 같은 시스템에 들어오고 나가며 다양한 대시보드를 활용하여 데이터를 탐색합니다.

채택 여부에 대한 전화 걸기

가장 큰 문제는 우리가 수집한 데이터로 무엇을 하느냐는 것입니다. 모델이 전반적으로 제대로 작동하지 않는 경우와 같이 결정이 간단할 때도 있습니다. 하지만 모델의 수용률이 상당히 높아지는 동시에 대기 시간도 늘어나면 어떻게 될까요?

측정항목 간에는 역관계가 있는 경우가 있습니다. 대기 시간이 길수록 사용자에게 표시되는 총 제안 수가 줄어들 수 있으므로 실제로 수락률이 높아질 수 있습니다.

GitHub의 목표는 최고의 품질과 가장 책임감 있는 AI 코딩 도우미를 만드는 것이며, 이는 제품 내에서 지원할 모델을 결정해야 하는 지침을 안내합니다. 그러나 우리의 평가 절차가 제공하는 품질 데이터가 없었다면 이를 만들 수 없었습니다. 여러분의 사용 사례에 적용할 수 있는 몇 가지 아이디어를 제공해 드렸기를 바랍니다.

GitHub 모델을 사용하여 생성적 AI 애플리케이션 구축

GitHub 모델을 사용하면 OpenAI, Cohere, Microsoft, Mistral 등의 AI 모델을 간단하게 사용, 비교, 실험 및 구축할 수 있습니다.

지금 구축 시작하기 >

작성자:

GitHub의 수석 소프트웨어 엔지니어

클린트 핀리

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다