InfoGrab DocsInfoGrab Docs

AI 아키텍처

요약

이 문서는 GitLab Duo AI 기능이 공유하는 아키텍처를 설명합니다. 다음 다이어그램은 GitLab의 여러 컴포넌트가 어떻게 상호작용하는지 간략하게 보여줍니다. package Clients { [IDEs, Code Editors, Language Server] as IDE [GitLab Web Frontend] as GLWEB }

이 문서는 GitLab Duo AI 기능이 공유하는 아키텍처를 설명합니다. 이 아키텍처의 역사적 배경 및 목표에 대해서는 AI Gateway 아키텍처 설계 문서를 참고하세요.

소개#

다음 다이어그램은 GitLab의 여러 컴포넌트가 어떻게 상호작용하는지 간략하게 보여줍니다.

PlantUML 다이어그램 (30줄)
소스 코드 보기
@startuml
!theme cloudscape-design
skinparam componentStyle rectangle

package Clients { [IDEs, Code Editors, Language Server] as IDE [GitLab Web Frontend] as GLWEB }

[GitLab.com] as GLCOM [Self-Managed/Dedicated] as SMI [CustomersDot API] as CD [AI Gateway] as AIGW

package Models { [3rd party models (Anthropic,VertexAI)] as THIRD [GitLab Native Models] as GLNM }

Clients -down-> GLCOM : REST/Websockets Clients -down-> SMI : REST/Websockets Clients -down-> AIGW : code completion direct connection SMI -right-> CD : License + JWT Sync GLCOM -down-> AIGW : Prompts + Telemetry + JWT (REST)

SMI -down-> AIGW : Prompts + Telemetry + JWT (REST) AIGW -up-> GLCOM : JWKS public key sync AIGW -up-> CD : JWKS public key sync AIGW -down-> Models : prompts @enduml

  • AI 추상화 계층 - 모든 GitLab 인스턴스(Self-Managed, GitLab.com 등)에는 AI 추상화 계층이 포함되어 있으며, 이는 모놀리스에서 새로운 AI 기능을 구현하기 위한 프레임워크를 제공합니다. 이 계층은 요청에 컨텍스트 정보를 추가하고, 요청 전처리/후처리를 수행합니다.

시스템#

  • GitLab 인스턴스 - 모든 유형의 GitLab 인스턴스를 구동하는 GitLab 모놀리스

  • CustomersDot - 고객이 좌석을 추가하거나 결제 정보를 추가/편집하여 구독을 구매하고 업그레이드할 수 있도록 합니다. Self-Managed 라이선스도 관리합니다.

  • AI Gateway - 모델을 호출하기 위한 통합 인터페이스를 제공하는 시스템입니다. Google Cloud Run에 배포됩니다(Runway 사용).

  • 확장 기능

Language Server (VS Code, Visual Studio 2022 for Windows, Neovim의 Code Suggestions를 구동)

GitLab.com과 Self-Managed/Dedicated가 AI Gateway에 접근하는 방식의 차이#

  • GitLab.com

GitLab.com 인스턴스는 개인 키로 서명된 JWT 인증 토큰을 자체 발급합니다.

  • 그 외 인스턴스 유형

Self-Managed 및 Dedicated는 CustomersDot과 라이선스 및 AI 액세스 토큰을 정기적으로 동기화합니다.

  • Self-Managed 및 Dedicated 인스턴스는 트래픽을 적절한 AI Gateway로 라우팅합니다.

SaaS 기반 AI 추상화 계층#

GitLab은 클라우드 호스팅 AI 아키텍처를 운영합니다. AI-gateway를 사용하여 라이선스가 있는 GitLab Self-Managed 인스턴스에도 접근을 허용할 예정입니다. 자세한 내용은 설계 문서를 참고하세요.

이에 대한 두 가지 주요 이유가 있습니다. 최고의 AI 모델은 클라우드 기반이며, 이는 종종 이 목적을 위해 설계된 특수 하드웨어에 의존하기 때문입니다. 또한 AI를 대규모로 적절한 성능으로 운영할 수 있는 Self-Managed 인프라를 운영하는 것은 상당한 작업입니다. 현재 AI에 관심 있는 Self-Managed 고객을 추적하고 있습니다.

AI Gateway#

AI Gateway(이전 명칭: model gateway)는 Self-Managed, Dedicated, GitLab.com 등 어떤 인스턴스를 사용하든 모든 GitLab 사용자에게 AI 기능 접근을 제공하는 독립형 서비스입니다. SaaS 기반 AI 추상화 계층은 클라우드 기반 프로바이더에 직접 접근하는 방식에서 이 게이트웨이에 연결하는 방식으로 전환됩니다.

GitLab-rails에서 AI-gateway로의 호출은 추상화 계층을 사용하여 수행할 수 있습니다. 기본적으로 이러한 작업은 Puma에서 장기 실행 요청을 방지하기 위해 Sidekiq job을 통해 비동기적으로 수행됩니다. Sidekiq에 의한 추가 지연 때문에 지연 시간에 민감하지 않은 작업에 사용해야 합니다.

작성 시점 기준으로, 추상화 계층은 여전히 AI 프로바이더를 직접 호출합니다. 에픽 11484에서 이를 변경하도록 제안하고 있습니다.

특정 작업이 지연 시간에 민감한 경우, AI-gateway를 직접 호출할 수 있습니다. 이렇게 하면 Sidekiq에 의해 추가되는 지연을 피할 수 있습니다. 이미 code_suggestions에 대해 이를 수행하고 있으며 /api/v4/code_suggestions에 중첩된 API 엔드포인트에서 처리됩니다. 새로 추가되는 엔드포인트는 /api/v4/ai_assisted 네임스페이스 아래에 중첩해야 합니다. 이렇게 하면 GitLab.com의 요청이 GitLab.com의 ai-assisted 플릿으로 자동 라우팅되어 일반 API에서 워크로드가 분리되고 필요시 더 쉽게 확장할 수 있습니다.

지원 기술#

AI 워킹 그룹의 일환으로, 다양한 기술을 조사하고 검증해 왔습니다. 아래는 검토되어 GitLab 애플리케이션 내 사용이 이미 승인된 도구 목록입니다.

다른 모델이나 기술을 활용하는 것도 가능하지만, 사용 전에 검토 프로세스를 거쳐야 합니다. 아이디어의 일환으로 AI 프로젝트 제안 템플릿을 사용하고, 이를 지원하는 데 필요한 새로운 도구를 포함시키세요.

모델#

사용이 승인된 모델은 다음과 같습니다:

Code Suggestions#

Code Suggestions는 GitLab-Rails 리포지터리의 일부로 통합되고 있으며, 이를 통해 Code Suggestions와 추상화 계층을 사용하는 AI 기능 간의 아키텍처가 통합되고 다른 AI 기능에 대한 Self-Managed 지원도 제공됩니다.

다음 표는 Code Suggestions가 현재 제공하는 기능과 통합 과정에서 해당 변경 사항이 어떻게 보일지를 문서화합니다:

항목 세부 내용 현재 처리 위치 향후 처리 위치
요청 처리
IDE(VS Code, GitLab Web IDE, MS Visual Studio 2022 for Windows, IntelliJ, JetBrains, VIM, Emacs, Sublime)로부터 커서 앞뒤 코드를 포함한 요청을 수신 GitLab Rails GitLab Rails
현재 사용자를 인증하고, 해당 프로젝트에서 Code Suggestions 사용 권한이 있는지 확인 GitLab Rails + AI Gateway GitLab Rails + AI Gateway
TreeSitter를 통한 import 포함 등 컨텍스트를 추가하기 위한 요청 전처리 AI Gateway 미결정
AI 프로바이더로 요청 라우팅 AI Gateway AI Gateway
IDE에 응답 반환 GitLab Rails GitLab Rails
타임스탬프, 응답 시간, 모델 등을 포함한 요청 로깅 양쪽 모두 양쪽 모두
텔레메트리
IDE에서의 사용자 수락 또는 거부 AI Gateway 양쪽 모두
일별 고유 사용자 수 GitLab Rails, AI Gateway 미결정
오류율, 모델 사용, 응답 시간, IDE 사용 AI Gateway 양쪽 모두
언어별 제안 AI Gateway 양쪽 모두
모니터링 양쪽 모두 양쪽 모두
모델 라우팅
현재 이 기능을 사용하고 있지 않지만, Code Suggestions는 트래픽 비율에 따라 여러 모델로 라우팅을 지원할 수 있음 AI Gateway 양쪽 모두
내부 모델
현재 유지 관리되지 않으며, 자체 인스턴스에서 모델을 실행하고 Triton 내부에서 실행하며 자체 모델로 요청을 라우팅하는 기능 AI Gateway AI Gateway

Self-Managed 지원#

GitLab Self-Managed용 Code Suggestions는 Cloud Connector MVC의 일환으로 도입되었습니다.

이 프로젝트의 기술적 해결 방법에 대한 자세한 내용은 Cloud Connector 아키텍처 문서를 참고하세요.

이 솔루션을 발전시켜 Cloud Connector 제품 범위 아래의 다른 AI 기능도 지원할 계획입니다.

Code Suggestions 지연 시간#

Code Suggestions 수락률은 지연 시간에 매우 민감합니다. AI 어시스턴트로 코드를 작성하는 동안 사용자는 코드 블록을 직접 타이핑하기 전에 잠깐만 멈춥니다. 사용자가 다음 키를 누르는 순간 기존 제안은 무효화되고 Code Suggestions 엔드포인트로 새로운 요청을 발행해야 합니다. 이 요청 역시 지연 시간에 매우 민감합니다.

충분한 지연이 있는 최악의 경우, IDE는 일련의 요청을 발행할 수 있으며, 사용자가 응답을 기다리지 않고 진행함에 따라 각 요청은 무시됩니다. 이는 사용자에게 아무런 가치를 제공하지 않으면서도 서비스에 부하를 가합니다.

이 기능의 지연 시간을 개선하기 위한 계획은 이슈 418955의 논의를 참고하세요.

아키텍처의 향후 변경 사항#

  • 지연 시간을 개선하기 위해 여러 리전에 AI Gateway를 배포할 계획입니다(에픽 Multi-region support for AI Gateway 참고).

  • 텔레메트리를 중앙화하고자 합니다. 그러나 AI(또는 Cloud Connector) 텔레메트리 중앙화는 현재로서는 어렵고 해결되지 않은 문제입니다.

AI 아키텍처

GitLab v19.1
원문 보기
요약

이 문서는 GitLab Duo AI 기능이 공유하는 아키텍처를 설명합니다. 다음 다이어그램은 GitLab의 여러 컴포넌트가 어떻게 상호작용하는지 간략하게 보여줍니다. package Clients { [IDEs, Code Editors, Language Server] as IDE [GitLab Web Frontend] as GLWEB }

이 문서는 GitLab Duo AI 기능이 공유하는 아키텍처를 설명합니다. 이 아키텍처의 역사적 배경 및 목표에 대해서는 AI Gateway 아키텍처 설계 문서를 참고하세요.

소개#

다음 다이어그램은 GitLab의 여러 컴포넌트가 어떻게 상호작용하는지 간략하게 보여줍니다.

PlantUML 다이어그램 (30줄)
소스 코드 보기
@startuml
!theme cloudscape-design
skinparam componentStyle rectangle

package Clients { [IDEs, Code Editors, Language Server] as IDE [GitLab Web Frontend] as GLWEB }

[GitLab.com] as GLCOM [Self-Managed/Dedicated] as SMI [CustomersDot API] as CD [AI Gateway] as AIGW

package Models { [3rd party models (Anthropic,VertexAI)] as THIRD [GitLab Native Models] as GLNM }

Clients -down-> GLCOM : REST/Websockets Clients -down-> SMI : REST/Websockets Clients -down-> AIGW : code completion direct connection SMI -right-> CD : License + JWT Sync GLCOM -down-> AIGW : Prompts + Telemetry + JWT (REST)

SMI -down-> AIGW : Prompts + Telemetry + JWT (REST) AIGW -up-> GLCOM : JWKS public key sync AIGW -up-> CD : JWKS public key sync AIGW -down-> Models : prompts @enduml

  • AI 추상화 계층 - 모든 GitLab 인스턴스(Self-Managed, GitLab.com 등)에는 AI 추상화 계층이 포함되어 있으며, 이는 모놀리스에서 새로운 AI 기능을 구현하기 위한 프레임워크를 제공합니다. 이 계층은 요청에 컨텍스트 정보를 추가하고, 요청 전처리/후처리를 수행합니다.

시스템#

  • GitLab 인스턴스 - 모든 유형의 GitLab 인스턴스를 구동하는 GitLab 모놀리스

  • CustomersDot - 고객이 좌석을 추가하거나 결제 정보를 추가/편집하여 구독을 구매하고 업그레이드할 수 있도록 합니다. Self-Managed 라이선스도 관리합니다.

  • AI Gateway - 모델을 호출하기 위한 통합 인터페이스를 제공하는 시스템입니다. Google Cloud Run에 배포됩니다(Runway 사용).

  • 확장 기능

Language Server (VS Code, Visual Studio 2022 for Windows, Neovim의 Code Suggestions를 구동)

GitLab.com과 Self-Managed/Dedicated가 AI Gateway에 접근하는 방식의 차이#

  • GitLab.com

GitLab.com 인스턴스는 개인 키로 서명된 JWT 인증 토큰을 자체 발급합니다.

  • 그 외 인스턴스 유형

Self-Managed 및 Dedicated는 CustomersDot과 라이선스 및 AI 액세스 토큰을 정기적으로 동기화합니다.

  • Self-Managed 및 Dedicated 인스턴스는 트래픽을 적절한 AI Gateway로 라우팅합니다.

SaaS 기반 AI 추상화 계층#

GitLab은 클라우드 호스팅 AI 아키텍처를 운영합니다. AI-gateway를 사용하여 라이선스가 있는 GitLab Self-Managed 인스턴스에도 접근을 허용할 예정입니다. 자세한 내용은 설계 문서를 참고하세요.

이에 대한 두 가지 주요 이유가 있습니다. 최고의 AI 모델은 클라우드 기반이며, 이는 종종 이 목적을 위해 설계된 특수 하드웨어에 의존하기 때문입니다. 또한 AI를 대규모로 적절한 성능으로 운영할 수 있는 Self-Managed 인프라를 운영하는 것은 상당한 작업입니다. 현재 AI에 관심 있는 Self-Managed 고객을 추적하고 있습니다.

AI Gateway#

AI Gateway(이전 명칭: model gateway)는 Self-Managed, Dedicated, GitLab.com 등 어떤 인스턴스를 사용하든 모든 GitLab 사용자에게 AI 기능 접근을 제공하는 독립형 서비스입니다. SaaS 기반 AI 추상화 계층은 클라우드 기반 프로바이더에 직접 접근하는 방식에서 이 게이트웨이에 연결하는 방식으로 전환됩니다.

GitLab-rails에서 AI-gateway로의 호출은 추상화 계층을 사용하여 수행할 수 있습니다. 기본적으로 이러한 작업은 Puma에서 장기 실행 요청을 방지하기 위해 Sidekiq job을 통해 비동기적으로 수행됩니다. Sidekiq에 의한 추가 지연 때문에 지연 시간에 민감하지 않은 작업에 사용해야 합니다.

작성 시점 기준으로, 추상화 계층은 여전히 AI 프로바이더를 직접 호출합니다. 에픽 11484에서 이를 변경하도록 제안하고 있습니다.

특정 작업이 지연 시간에 민감한 경우, AI-gateway를 직접 호출할 수 있습니다. 이렇게 하면 Sidekiq에 의해 추가되는 지연을 피할 수 있습니다. 이미 code_suggestions에 대해 이를 수행하고 있으며 /api/v4/code_suggestions에 중첩된 API 엔드포인트에서 처리됩니다. 새로 추가되는 엔드포인트는 /api/v4/ai_assisted 네임스페이스 아래에 중첩해야 합니다. 이렇게 하면 GitLab.com의 요청이 GitLab.com의 ai-assisted 플릿으로 자동 라우팅되어 일반 API에서 워크로드가 분리되고 필요시 더 쉽게 확장할 수 있습니다.

지원 기술#

AI 워킹 그룹의 일환으로, 다양한 기술을 조사하고 검증해 왔습니다. 아래는 검토되어 GitLab 애플리케이션 내 사용이 이미 승인된 도구 목록입니다.

다른 모델이나 기술을 활용하는 것도 가능하지만, 사용 전에 검토 프로세스를 거쳐야 합니다. 아이디어의 일환으로 AI 프로젝트 제안 템플릿을 사용하고, 이를 지원하는 데 필요한 새로운 도구를 포함시키세요.

모델#

사용이 승인된 모델은 다음과 같습니다:

Code Suggestions#

Code Suggestions는 GitLab-Rails 리포지터리의 일부로 통합되고 있으며, 이를 통해 Code Suggestions와 추상화 계층을 사용하는 AI 기능 간의 아키텍처가 통합되고 다른 AI 기능에 대한 Self-Managed 지원도 제공됩니다.

다음 표는 Code Suggestions가 현재 제공하는 기능과 통합 과정에서 해당 변경 사항이 어떻게 보일지를 문서화합니다:

항목 세부 내용 현재 처리 위치 향후 처리 위치
요청 처리
IDE(VS Code, GitLab Web IDE, MS Visual Studio 2022 for Windows, IntelliJ, JetBrains, VIM, Emacs, Sublime)로부터 커서 앞뒤 코드를 포함한 요청을 수신 GitLab Rails GitLab Rails
현재 사용자를 인증하고, 해당 프로젝트에서 Code Suggestions 사용 권한이 있는지 확인 GitLab Rails + AI Gateway GitLab Rails + AI Gateway
TreeSitter를 통한 import 포함 등 컨텍스트를 추가하기 위한 요청 전처리 AI Gateway 미결정
AI 프로바이더로 요청 라우팅 AI Gateway AI Gateway
IDE에 응답 반환 GitLab Rails GitLab Rails
타임스탬프, 응답 시간, 모델 등을 포함한 요청 로깅 양쪽 모두 양쪽 모두
텔레메트리
IDE에서의 사용자 수락 또는 거부 AI Gateway 양쪽 모두
일별 고유 사용자 수 GitLab Rails, AI Gateway 미결정
오류율, 모델 사용, 응답 시간, IDE 사용 AI Gateway 양쪽 모두
언어별 제안 AI Gateway 양쪽 모두
모니터링 양쪽 모두 양쪽 모두
모델 라우팅
현재 이 기능을 사용하고 있지 않지만, Code Suggestions는 트래픽 비율에 따라 여러 모델로 라우팅을 지원할 수 있음 AI Gateway 양쪽 모두
내부 모델
현재 유지 관리되지 않으며, 자체 인스턴스에서 모델을 실행하고 Triton 내부에서 실행하며 자체 모델로 요청을 라우팅하는 기능 AI Gateway AI Gateway

Self-Managed 지원#

GitLab Self-Managed용 Code Suggestions는 Cloud Connector MVC의 일환으로 도입되었습니다.

이 프로젝트의 기술적 해결 방법에 대한 자세한 내용은 Cloud Connector 아키텍처 문서를 참고하세요.

이 솔루션을 발전시켜 Cloud Connector 제품 범위 아래의 다른 AI 기능도 지원할 계획입니다.

Code Suggestions 지연 시간#

Code Suggestions 수락률은 지연 시간에 매우 민감합니다. AI 어시스턴트로 코드를 작성하는 동안 사용자는 코드 블록을 직접 타이핑하기 전에 잠깐만 멈춥니다. 사용자가 다음 키를 누르는 순간 기존 제안은 무효화되고 Code Suggestions 엔드포인트로 새로운 요청을 발행해야 합니다. 이 요청 역시 지연 시간에 매우 민감합니다.

충분한 지연이 있는 최악의 경우, IDE는 일련의 요청을 발행할 수 있으며, 사용자가 응답을 기다리지 않고 진행함에 따라 각 요청은 무시됩니다. 이는 사용자에게 아무런 가치를 제공하지 않으면서도 서비스에 부하를 가합니다.

이 기능의 지연 시간을 개선하기 위한 계획은 이슈 418955의 논의를 참고하세요.

아키텍처의 향후 변경 사항#

  • 지연 시간을 개선하기 위해 여러 리전에 AI Gateway를 배포할 계획입니다(에픽 Multi-region support for AI Gateway 참고).

  • 텔레메트리를 중앙화하고자 합니다. 그러나 AI(또는 Cloud Connector) 텔레메트리 중앙화는 현재로서는 어렵고 해결되지 않은 문제입니다.