조직을 위한 코딩 도우미 사용자 정의 | 아마존 웹 서비스

조직을 위한 코딩 도우미 사용자 정의 | 아마존 웹 서비스

조직을 위한 코딩 도우미 사용자 정의 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.

코딩 동반자를 위한 생성적 AI 모델은 대부분 공개적으로 사용 가능한 소스 코드와 자연어 텍스트를 기반으로 훈련됩니다. 훈련 자료의 크기가 크기 때문에 모델은 일반적으로 사용되는 기능에 대한 코드를 생성할 수 있지만, 이러한 모델은 개인 저장소의 코드와 개발 시 적용되는 관련 코딩 스타일을 인식하지 못합니다. 결과적으로 생성된 제안을 내부 저장소에 통합하기에 적합하려면 다시 작성해야 할 수도 있습니다.

우리는 공개 코드에 대해 훈련된 언어 모델 위에 비공개 저장소의 코드 지식을 내장함으로써 이러한 격차를 해소하고 추가적인 수동 편집을 최소화할 수 있습니다. 이것이 바로 우리가 맞춤형 기능을 개발한 이유입니다. 아마존 코드위스퍼러. 이 게시물에서는 검색 증강 생성 및 미세 조정을 사용하여 코딩 컴패니언을 사용자 정의하는 두 가지 가능한 방법을 보여줍니다.

CodeWhisperer 사용자 정의 기능의 목표는 조직이 개인 리포지토리와 라이브러리를 사용하여 CodeWhisperer 모델을 맞춤화하여 시간을 절약하고 조직 스타일과 규칙을 따르며 버그나 보안 취약성을 방지하는 조직별 코드 권장 사항을 생성할 수 있도록 하는 것입니다. 이는 엔터프라이즈 소프트웨어 개발에 도움이 되며 다음 과제를 극복하는 데 도움이 됩니다.

  1. 개발자가 사용법을 복제하기 위해 이전에 작성된 코드를 검사하는 데 시간을 소비하도록 하는 내부 라이브러리 및 API에 대한 문서 또는 정보가 부족합니다.
  2. 기업별 코딩 관행, 스타일 및 패턴 구현에 대한 인식과 일관성이 부족합니다.
  3. 개발자가 더 이상 사용되지 않는 코드 및 API를 실수로 사용합니다.

이미 코드 검토를 거친 추가 교육을 위해 내부 코드 저장소를 사용함으로써 언어 모델은 이전 문제 목록을 극복하는 내부 API 및 코드 블록의 사용을 표면화할 수 있습니다. 참조 코드는 이미 검토되었으며 고객의 높은 기준을 충족하므로 버그나 보안 취약점이 발생할 가능성도 최소화됩니다. 그리고 사용자 정의에 사용되는 소스 파일을 신중하게 선택함으로써 조직은 더 이상 사용되지 않는 코드의 사용을 줄일 수 있습니다.

디자인 과제

조직의 개인 저장소를 기반으로 코드 제안을 사용자 정의하는 데는 많은 흥미로운 설계 과제가 있습니다. 표면 코드 제안에 LLM(대형 언어 모델)을 배포하면 생성된 토큰 수를 기반으로 한 추론으로 인해 가용성에 대한 고정 비용과 가변 비용이 발생합니다. 따라서 각 고객에 대해 별도의 사용자 정의를 수행하고 이를 개별적으로 호스팅함으로써 추가 고정 비용이 발생할 수 있으므로 비용이 엄청나게 많이 들 수 있습니다. 반면, 동일한 시스템에서 여러 사용자 정의를 동시에 수행하려면 각 고객의 독점 코드를 격리하기 위한 다중 테넌트 인프라가 필요합니다. 또한 사용자 정의 기능은 다양한 측정항목(예: 최근에 저장소에 커밋된 코드 또는 버그 기록이 적은 파일)을 사용하여 내부 저장소에서 적절한 훈련 하위 집합을 선택할 수 있도록 손잡이를 표면화해야 합니다. 이러한 지표를 기반으로 코드를 선택하면 코드 제안의 품질을 향상시킬 수 있는 고품질 코드를 사용하여 사용자 정의를 학습할 수 있습니다. 마지막으로, 코드 저장소가 지속적으로 발전하더라도 기업이 개발자 생산성 향상을 통해 비용 절감을 실현할 수 있도록 사용자 정의와 관련된 비용은 최소화되어야 합니다.

사용자 정의 구축에 대한 기본 접근 방식은 (비공개) 엔터프라이즈 코드와 함께 기존 (공용) 사전 학습 데이터 세트로 구성된 단일 학습 자료에서 모델을 사전 학습하는 것입니다. 이 접근 방식은 실제로는 효과가 있지만 각 기업의 공개 데이터 세트를 사용하는 (중복) 개별 사전 학습이 필요합니다. 또한 해당 고객으로부터 발생한 클라이언트 요청만 처리하는 각 고객에 대한 맞춤형 모델을 호스팅하는 것과 관련된 중복 배포 비용이 필요합니다. 공개 코드와 비공개 코드의 교육을 분리하고 다중 테넌트 시스템에 사용자 정의를 배포함으로써 이러한 중복 비용을 피할 수 있습니다.

사용자 정의하는 방법

높은 수준에서 가능한 사용자 정의 기술에는 RAG(검색 증강 생성)와 FT(미세 조정)라는 두 가지 유형이 있습니다.

  • 검색 증강 생성: RAG는 ​​지정된 코드 조각(예: IDE에서 커서 바로 앞에 있는 코드)과 유사한 저장소 내에서 일치하는 코드 조각을 찾고 일치하는 코드 조각으로 LLM을 쿼리하는 데 사용되는 프롬프트를 확장합니다. 이는 모델이 보다 관련성이 높은 코드를 생성하도록 유도하는 데 도움이 되는 프롬프트를 강화합니다. 이러한 맥락에서 문헌에서 탐구된 몇 가지 기술이 있습니다. 보다 지식 집약적 NLP 작업을위한 검색 증강 생성, 왕국, kNN-LM레트로.

조직을 위한 코딩 도우미 사용자 정의 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.

  • 미세 조정: FT는 사전 훈련된 LLM을 가져와서 (사전 훈련 데이터 세트와 비교하여) 더 작은 특정 코드베이스에서 추가 훈련하여 적절한 저장소에 맞게 조정합니다. 미세 조정은 이 교육을 기반으로 LLM의 가중치를 조정하여 조직의 고유한 요구 사항에 더욱 적합하게 만듭니다.

RAG와 미세 조정은 모두 LLM 기반 사용자 정의 성능을 향상시키는 강력한 도구입니다. RAG는 ​​훈련 복잡성과 비용을 낮추면서 개인 라이브러리나 API에 빠르게 적응할 수 있습니다. 그러나 검색된 코드 조각을 프롬프트로 검색하고 보강하면 런타임 시 대기 시간이 늘어납니다. 대신, 모델이 이미 비공개 라이브러리 및 API에서 훈련되었기 때문에 미세 조정을 위해 컨텍스트를 추가할 필요가 없습니다. 그러나 여러 기업 고객에 걸쳐 여러 사용자 정의 모델을 지원해야 하는 경우 모델 제공 시 교육 비용이 높아지고 복잡성이 높아집니다. 나중에 논의하겠지만 이러한 문제는 접근 방식을 더욱 최적화하여 해결할 수 있습니다.

검색증강세대

RAG에는 다음과 같은 몇 가지 단계가 포함됩니다.

색인

관리자가 개인 저장소를 입력하면 소스 코드 파일을 청크로 분할하여 인덱스가 생성됩니다. 간단히 말해서, 청킹은 코드 조각을 모델에 가장 유익하고 상황에 따라 쉽게 검색할 수 있는 소화 가능한 조각으로 바꿉니다. 청크의 크기와 파일에서 추출되는 방식은 최종 결과에 영향을 미치는 디자인 선택입니다. 예를 들어 청크는 코드 줄이나 구문 블록 등을 기준으로 분할될 수 있습니다.

관리자 워크플로

조직을 위한 코딩 도우미 사용자 정의 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.
문맥 검색

커서 위의 몇 줄의 코드를 기반으로 색인화된 코드 조각 세트를 검색하고 관련 코드 조각을 검색합니다. 이 검색은 다양한 알고리즘을 사용하여 발생할 수 있습니다. 이러한 선택에는 다음이 포함될 수 있습니다.

  • 단어 가방 (BM25) - 검색어 빈도와 코드 조각 길이를 기준으로 코드 조각 집합의 순위를 매기는 단어 모음 검색 기능입니다.

BM25 기반 검색

조직을 위한 코딩 도우미 사용자 정의 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.

다음 그림은 BM25의 작동 방식을 보여줍니다. BM25를 사용하기 위해서는 먼저 역인덱스를 구축해야 한다. 이는 다양한 용어를 해당 용어가 포함된 코드 조각에 매핑하는 데이터 구조입니다. 검색 시 쿼리에 있는 용어를 기반으로 코드 조각을 조회하고 빈도에 따라 점수를 매깁니다.

의미 검색

조직을 위한 코딩 도우미 사용자 정의 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.

BM25는 어휘 일치에 중점을 둡니다. 따라서 "추가"를 "삭제"로 바꾸면 쿼리의 용어에 따라 BM25 점수가 변경되지 않을 수 있지만 검색된 기능은 필요한 기능과 반대일 수 있습니다. 이와 대조적으로 의미 검색은 변수 이름과 API 이름이 다를 수 있더라도 코드 조각의 기능에 중점을 둡니다. 일반적으로 BM25와 의미 검색을 함께 사용하면 더 나은 결과를 얻을 수 있습니다.

증강 추론

개발자가 코드를 작성할 때 기존 프로그램을 사용하여 검색 색인으로 전송되는 쿼리를 작성합니다. 위에서 설명한 기술 중 하나를 사용하여 여러 코드 조각을 검색한 후 이를 원래 프롬프트 앞에 추가합니다. 여기에는 검색할 코드 조각 수, 프롬프트에서 코드 조각의 상대적 위치, 코드 조각 크기 등 다양한 디자인 선택 사항이 있습니다. 최종 디자인 선택은 주로 기본 언어 모델을 사용하여 다양한 접근 방식을 탐색하여 경험적 관찰을 통해 이루어지며 접근 방식의 정확성을 결정하는 데 중요한 역할을 합니다. 반환된 청크의 내용과 원본 코드가 결합되어 모델로 전송되어 맞춤형 코드 제안을 받습니다.

개발자 워크플로우

조직을 위한 코딩 도우미 사용자 정의 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.

미세 조정:

미세 조정 언어 모델이 완성되었습니다 전학 학습 사전 훈련된 모델의 가중치가 새로운 데이터에 대해 훈련됩니다. 목표는 대규모 코퍼스에서 이미 훈련된 모델로부터 적절한 지식을 유지하고 새 코퍼스(이 경우에는 새 코드베이스)의 새로운 지식을 개선, 대체 또는 추가하는 것입니다. 새로운 코드베이스에 대한 교육만 하면 비극적 인 망각. 예를 들어, 언어 모델은 다음과 같습니다. 안전에 대한 지식을 "잊어라" 또는 현재까지 엔터프라이즈 코드베이스에서 드물게 사용되는 API입니다. 등 다양한 기술이 있습니다. 다시보기를 경험하다, GEMPP-TF 이러한 문제를 해결하기 위해 사용되는 솔루션입니다.

미세 조정

조직을 위한 코딩 도우미 사용자 정의 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.

미세 조정에는 두 가지 방법이 있습니다. 한 가지 접근 방식은 모델을 미세 조정하기 위한 프롬프트를 강화하지 않고 추가 데이터를 사용하는 것입니다. 또 다른 접근 방식은 관련 코드 제안을 검색하여 미세 조정 중에 프롬프트를 강화하는 것입니다. 이는 검색된 코드 조각이 있을 때 더 나은 제안을 제공하는 모델의 기능을 향상시키는 데 도움이 됩니다. 그런 다음 모델은 학습된 후 보유된 예제 세트에 대해 평가됩니다. 그 후, 사용자 정의된 모델이 배포되어 코드 제안을 생성하는 데 사용됩니다.

개인 리포지토리에서 코드를 생성하기 위해 전용 LLM을 사용하면 얻을 수 있는 이점에도 불구하고 중소기업의 경우 비용이 엄청날 수 있습니다. 이는 팀 규모에 따라 활용도가 낮더라도 전용 컴퓨팅 리소스가 필요하기 때문입니다. 비용 효율성을 달성하는 한 가지 방법은 동일한 컴퓨팅에서 여러 모델을 제공하는 것입니다(예: SageMaker 다중 테넌시). 그러나 언어 모델에는 대기 시간 및 처리량 제약 조건을 처리하기 위해 여러 영역에 걸쳐 하나 이상의 전용 GPU가 필요합니다. 따라서 각 GPU에서 전체 모델 호스팅의 다중 테넌시는 불가능합니다.

우리는 작은 기술을 사용하여 동일한 컴퓨팅에서 여러 고객에게 서비스를 제공함으로써 이 문제를 극복할 수 있습니다. 어댑터 LLM에. 다음과 같은 매개변수 효율적 미세 조정(PEFT) 기술 신속한 튜닝, 접두사 튜닝및 낮은 순위 적응(로라)은 정확도 손실 없이 훈련 비용을 낮추는 데 사용됩니다. 특히 LoRA는 전체 모델 미세 조정과 유사하거나 더 나은 정확도를 달성하는 데 큰 성공을 거두었습니다. 기본 아이디어는 모델의 대상 레이어의 원래 행렬 가중치를 사용하여 행렬에 추가되는 낮은 순위 행렬을 설계하는 것입니다. 일반적으로 이러한 어댑터는 제공을 위해 원래 모델 가중치와 병합됩니다. 이는 원래 신경망과 동일한 크기와 아키텍처로 이어집니다. 어댑터를 별도로 유지하면 많은 모델 어댑터를 사용하여 동일한 기본 모델을 제공할 수 있습니다. 이를 통해 중소 규모 고객에게 규모의 경제가 다시 제공됩니다.

낮은 순위 적응(LoRA)

조직을 위한 코딩 도우미 사용자 정의 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.

맞춤화 효과 측정

맞춤형 솔루션의 효율성을 평가하려면 평가 지표가 필요합니다. 오프라인 평가 지표는 기본 모델과 비교할 때 수준 이하인 배송 사용자 정의에 대한 가드레일 역할을 합니다. 제공된 리포지토리 내에서 보관된 데이터 세트로 데이터 세트를 구축함으로써 이 데이터 세트에 사용자 정의 접근 방식을 적용하여 효율성을 측정할 수 있습니다. 기존 소스 코드를 사용자 정의된 코드 제안과 비교하여 사용자 정의의 유용성을 정량화합니다. 이 정량화에 사용되는 일반적인 측정값에는 다음과 같은 측정항목이 포함됩니다. 유사성 편집, 정확한 일치 및 코드블루.

사용자 정의에 의해 내부 API가 호출되는 빈도를 정량화하고 이를 기존 소스의 호출과 비교하여 유용성을 측정하는 것도 가능합니다. 물론 성공적인 완료를 위해서는 두 가지 측면을 모두 올바르게 수행하는 것이 중요합니다. 사용자 정의 접근 방식을 위해 우리는 1에서 10 사이의 사용자 친화적인 단일 측정값인 CQI(Customization Quality Index)라는 맞춤형 측정 기준을 설계했습니다. CQI 측정 기준은 코드와 비교하여 사용자 정의 모델에서 제안한 사항의 유용성을 보여줍니다. 일반적인 공개 모델에 대한 제안.

요약

우리는 이 블로그 게시물에서 논의된 주요 기술 기술의 혼합을 기반으로 Amazon CodeWhisperer 사용자 정의 기능을 구축하고 Pertant Systems에서 수행한 개발자 생산성에 대한 사용자 연구를 통해 이를 평가했습니다. AWS가 의뢰한 이 두 가지 연구에서 개발자는 내부 라이브러리를 사용해야 하는 Java로 의료 소프트웨어 애플리케이션을 생성해 달라는 요청을 받았습니다. 첫 번째 연구에서 CodeWhisperer에 액세스하지 못한 개발자는 작업을 완료하는 데 평균 8.2시간이 걸렸고, 사용자 정의 없이 CodeWhisperer를 사용한 개발자는 평균 62시간 만에 작업을 3.1% 더 빠르게 완료했습니다.

다른 개발자 집단을 대상으로 한 두 번째 연구에서 개인 코드베이스를 사용하여 사용자 정의된 CodeWhisperer를 사용하는 개발자는 평균 2.5시간 만에 작업을 완료했습니다. 이는 사용자 정의 없이 CodeWhisperer를 사용하고 ~28시간 만에 작업을 완료한 개발자보다 3.5% 더 빠른 것입니다. 평균 시간. 우리는 귀하의 코드베이스에 맞게 사용자 정의된 CodeWhisperer와 같은 도구가 개발자 생산성을 더욱 높이는 데 핵심적인 역할을 한다고 굳게 믿으며 이를 실행해 볼 것을 권장합니다. 자세한 내용을 알아보고 시작하려면 다음을 방문하세요. Amazon CodeWhisperer 페이지.


저자 소개

조직을 위한 코딩 도우미 사용자 정의 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.청순 그는 AWS AI 연구소의 수석 응용 과학자이며 생성적 AI 기반 코딩 도우미인 AWS CodeWhisperer를 연구하고 있습니다. 그녀의 연구 관심 분야는 자연어 처리, AI4Code 및 생성 AI입니다. 과거에는 Amazon Health AI의 의료 진단 시스템인 Comprehend Medical과 Meta AI의 기계 번역 시스템 등 여러 NLP 기반 서비스에 참여했습니다. 그녀는 2017년에 버지니아 공대에서 박사 학위를 받았습니다.

조직을 위한 코딩 도우미 사용자 정의 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.아라쉬 파라하니 Amazon CodeWhisperer의 응용 과학자입니다. 그의 현재 관심 분야는 생성 AI, 검색, 개인화입니다. Arash는 개발자의 문제점을 해결하는 솔루션 구축에 열정을 갖고 있습니다. 그는 CodeWhisperer 내의 여러 기능을 작업했으며 모든 Amazon 개발자와 관련된 다양한 내부 작업 흐름에 NLP 솔루션을 도입했습니다. 그는 2017년 일리노이대학교 어바나-샴페인캠퍼스에서 박사학위를 취득했습니다.

조직을 위한 코딩 도우미 사용자 정의 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.마샤오페이 AWS AI Labs의 응용 과학 관리자입니다. 그는 2016년에 SCOT 조직 내 응용 과학자로 Amazon에 합류했으며 이후 2018년에는 AWS AI Labs에서 Amazon Kendra 작업을 수행했습니다. Xiaofei는 Kendra, 콘택트 렌즈, 가장 최근에는 CodeWhisperer 및 CodeGuru Security를 ​​포함한 여러 서비스의 과학 관리자로 활동해 왔습니다. 그의 연구 관심 분야는 AI4Code 및 자연어 처리 분야입니다. 그는 2010년 메릴랜드 대학교 칼리지 파크에서 박사 학위를 받았습니다.

조직을 위한 코딩 도우미 사용자 정의 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.무랄리 크리슈나 라마나단 그는 AWS AI 연구소의 수석 응용 과학자이며 생성적 AI 기반 코딩 동반자인 AWS CodeWhisperer를 공동으로 이끌고 있습니다. 그는 개발자 생산성을 향상시키는 데 도움이 되는 소프트웨어 도구와 워크플로를 구축하는 데 열정을 쏟고 있습니다. 과거에는 오래된 기능 플래그로 인해 코드를 삭제하는 자동화된 리팩토링 도구인 Piranha를 구축하고 Uber 엔지니어링에서 코드 품질 이니셔티브를 이끌었습니다. 그는 Google 교수상(2015), ACM SIGSOFT 우수 논문상(ISSTA 2016) 및 Maurice Halstead 상(Purdue 2006)을 수상했습니다. 그는 2008년 퍼듀 대학교에서 컴퓨터 공학 박사 학위를 받았습니다.

조직을 위한 코딩 도우미 사용자 정의 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.라메쉬 날라파티 그는 AWS AI 연구소의 선임 수석 응용 과학자이며 생성적 AI 기반 코딩 도우미인 CodeWhisperer와 AWS의 Titan 대규모 언어 모델을 공동으로 이끌고 있습니다. 그의 관심 분야는 주로 자연어 처리 및 생성 AI 분야입니다. 과거에 Ramesh는 Kendra, Quicksight Q 및 Contact Lens와 같은 많은 NLP 기반 AWS 제품을 제공하는 데 과학적인 리더십을 제공해 왔습니다. 그는 Stanford, CMU 및 IBM Research에서 연구직을 역임했으며 박사 학위를 받았습니다. 2006년 매사추세츠대학교 애머스트대학교에서 컴퓨터공학 박사.

타임 스탬프 :

더보기 AWS 기계 학습