AI 아키텍처
이 문서는 GitLab Duo AI 기능에서 공유하는 아키텍처를 설명합니다. 이 아키텍처의 역사적 동기와 목표에 대한 자세한 내용은 AI 게이트웨이 아키텍처 설계 문서를 참조하십시오.
소개
다음 다이어그램은 GitLab의 다양한 구성 요소가 상호 작용하는 간단한 뷰를 보여줍니다.
- AI 추상화 레이어 - 모든 GitLab 인스턴스(Self-Managed, GitLab.com 등)에는 AI 추상화 레이어가 포함되어 있으며, 이는 단일체에 새로운 AI 기능을 구현하기 위한 프레임워크를 제공합니다. 이 레이어는 요청에 컨텍스트 정보를 추가하고 요청 전/후 처리를 수행합니다.
시스템
- GitLab 인스턴스 - 모든 유형의 GitLab 인스턴스에 전원을 공급하는 GitLab 단일체
- CustomersDot - 고객이 추가 좌석을 구매하고 업그레이드하며 지불 레코드를 추가/편집할 수 있는 기능을 제공합니다. 또한 Self-Managed 라이선스를 관리합니다.
- AI Gateway - 모든 GitLab 사용자에게 AI 기능에 대한 통합 인터페이스를 제공하는 시스템으로, Google Cloud Run에 배포됩니다(Runway 사용).
- 확장 기능
- 언어 서버 (VS Code, Windows용 Visual Studio 2022 및 Neovim에서 Code Suggestions 기능을 지원합니다.)
- VS Code
- JetBrains
- Windows용 Visual Studio 2022
- Neovim
GitLab.com 및 Self-Managed/Dedicated의 AI Gateway 접속 차이
- GitLab.com
- GitLab.com 인스턴스는 개인 키로 서명된 JWT Auth 토큰을 자체 발급합니다.
- 기타 유형의 인스턴스
- Self-Managed 및 Dedicated 인스턴스는 정기적으로 라이선스 및 AI 액세스 토큰을 CustomersDot과 동기화합니다.
- Self-Managed 및 Dedicated 인스턴스는 트래픽을 적절한 AI Gateway로 라우팅합니다.
SaaS 기반 AI 추상화 레이어
GitLab은 클라우드 호스팅 AI 아키텍처를 운영합니다. 라이선스가 있는 Self-Managed 인스턴스가 이를 AI Gateway를 통해 액세스할 수 있도록 허용할 것입니다. 자세한 내용은 설계 문서를 참조하십시오.
이에는 주된 이유가 두 가지 있습니다: 최상의 AI 모델들은 특수하게 설계된 전문 하드웨어에 의존하기 때문에 클라우드 기반입니다. 또한, 적절한 성능으로 대규모의 AI를 운영하기 위한 Self-Managed 인프라를 운영하는 것은 상당한 작업입니다. 우리는 현재 AI에 관심 있는 Self-Managed 고객을 활발하게 추적하고 있습니다.
AI Gateway
AI Gateway(이전의 model gateway)는 GitLab의 모든 사용자가 사용 중인 인스턴스(자체 관리형, 전용 또는 GitLab.com)에 AI 기능에 대한 액세스를 제공하는 독립형 서비스입니다. SaaS 기반 AI 추상화 레이어는 클라우드 기반 공급 업체에 직접 액세스하는 대신이 게이트웨이에 연결하도록 전환될 것입니다.
GitLab-rails에서 AI-Gateway로의 호출은 기본적으로 추상화 레이어를 통해 수행됩니다. 일반적으로 이러한 작업은 Puma에서의 장기 실행 요청을 방지하기 위해 Sidekiq 작업을 통해 비동기적으로 수행됩니다. 추가된 Sidekiq에 의한 지연 때문에 이 기능은 레이턴시에 민감하지 않을 때 사용해야 합니다.
현재까지, 추상화 레이어는 여전히 AI 제공 업체를 직접 호출합니다. Epic 11484에서 이를 변경하도록 제안되었습니다.
특정 작업이 레이턴시에 민감할 경우 AI Gateway로 직접 호출하는 결정을 내릴 수 있습니다. 이를 통해 Sidekiq에 의한 지연을 피할 수 있습니다.
우리는 이미 code_suggestions
에 대해 이를 수행합니다.
이와 같이하여 새로 추가되는 엔드포인트에 대해서는 /api/v4/ai_assisted
네임스페이스안에 중첩하도록 하십시오. 이렇게 함으로써 GitLab.com의 요청이 ai-assisted
fleet로 라우팅되어 일반 API의 작업 부하와 분리되며 필요에 따라 쉽게 확장할 수 있게 됩니다.
지원되는 기술
AI 작업 그룹의 일부로, 우리는 다양한 기술을 조사하고 확증해 왔습니다. 아래는 GitLab 애플리케이션 내에서 사용하기로 승인된 도구들의 목록입니다.
다른 모델이나 기술을 활용할 수 있지만, 사용하기 전에 리뷰 과정을 거쳐야 합니다. 새로운 도구를 지원하기 위해 AI 프로젝트 제안 템플릿을 사용하여 아이디어를 제시하고 그것을 지원하기 위해 필요한 새로운 도구를 포함하십시오.
모델
다음 모델들을 사용하는 데 승인되었습니다:
- Google의 Vertex AI 및 model garden
- Anthropic 모델
- 제안된 reviewer
임베딩
GitLab 임베딩에 대한 자세한 내용은 AI 임베딩 아키텍처를 참조하십시오.
코드 제안
코드 제안은 GitLab-Rails 저장소의 일부로 통합되고 있으며, 코드 제안과 추상화 레이어를 사용하는 AI 기능 간의 아키텍처를 통합하며, 다른 AI 기능에 대한 자체 관리 지원을 제공합니다.
다음 표는 코드 제안이 현재 제공하는 기능 및 그 통합의 일환으로 어떻게 변할지에 대한 내용을 기록한 것입니다:
주제 | 세부 정보 | 현재 이 작업이 발생하는 곳 | 앞으로 이 작업이 발생할 곳 |
---|---|---|---|
요청 처리 | |||
IDE(Visual Studio Code, GitLab WebIDE, MS Visual Studio 2022 for Windows, IntelliJ, JetBrains, VIM, Emacs, Sublime)에서 요청 수신, 커서 앞뒤의 코드 포함 | GitLab Rails | GitLab Rails | |
현재 사용자 인증, 이 프로젝트에서 코드 제안을 사용할 권한이 있는지 확인 | GitLab Rails + AI Gateway | GitLab Rails + AI Gateway | |
TreeSitter를 통해 import를 포함한 컨텍스트 추가 등 요청 사전 처리 | AI Gateway | 미정 | |
요청을 AI 공급 업체에 라우팅 | AI Gateway | AI Gateway | |
IDE로 응답 반환 | GitLab Rails | GitLab Rails | |
타임스탬프, 응답 시간, 모델 등을 포함한 요청 로깅 | 양쪽 | 양쪽 | |
Telemetry | |||
IDE에서의 사용자 수용 또는 거부 | AI Gateway | 양쪽 | |
매일의 고유 사용자 수 | GitLab Rails, AI gateway | 미정 | |
에러율, 모델 사용, 응답 시간, IDE 사용 등 | AI Gateway | 양쪽 | |
언어별 제안 | AI Gateway | 양쪽 | |
모니터링 | 양쪽 | 양쪽 | |
모델 라우팅 | |||
현재는 이 기능을 사용하지 않고 있지만, 코드 제안은 트래픽 비율에 따라 여러 모델로 라우팅 지원 가능합니다. | AI Gateway | 양쪽 | |
내부 모델 | |||
현재 유지 관리되지 않으며, 자체 인스턴스에서 모델 실행 및 Triton 내에서 실행, 자체 모델에 대한 요청 라우팅 지원 가능 | AI Gateway | AI Gateway |
자체 관리 지원
자체 관리 사용자를 위한 코드 제안은 Cloud Connector MVC의 일환으로 소개되었습니다.
이 프로젝트에 대한 기술 솔루션에 대한 자세한 내용은 Cloud Connector 아키텍처 문서를 참조하십시오.
이 솔루션을 진화시켜서 Cloud Connector 제품 프로젝트에 속하는 다른 AI 기능을 지원할 계획입니다.
코드 제안 대기 시간
코드 제안의 수락률은 대기 시간에 매우 민감합니다. AI 어시스턴트로 코드를 작성하는 동안 사용자는 짧은 시간 동안만 일시적으로 일반적인 코드를 수동으로 입력하기 전에 멈출 것입니다. 사용자가 이후의 키를 누르자마자 기존 제안이 무효화되고 새 요청이 코드 제안 엔드포인트에 보내질 것입니다. 결국 이 요청 또한 대기 시간에 매우 민감할 것입니다.
충분한 대기 시간이 있는 최악의 경우에는 IDE가 여러 요청을 발행할 수 있으며, 각각의 요청은 사용자가 응답을 기다리지 않고 진행함에 따라 무시될 수 있습니다. 이는 사용자에게는 가치가 없는데도 서비스에 부담을 줄 수 있습니다.
이 기능의 대기 시간에 대해 어떻게 발전할 계획인지에 대한 논의는 여기에서 확인할 수 있습니다.
아키텍처에 대한 미래 변경 사항
- AI Gateway를 서로 다른 지역에 배포할 계획입니다. (다중 지역 지원을 위한 에픽 AI Gateway를 위한 다중 지역 지원 참조)
- AI (또는 Cloud Connector) 텔레메트리를 중앙 집중화하고 싶습니다. 그러나 현재로서는 AI(또는 Cloud Connector) 텔레메트리를 중앙 집중화하는 것은 어렵고 해결되지 않은 문제입니다.