소개
AI 워크플로 팀이 새로운 프로젝트에서 수행할 수 있는 가장 큰 비용 절감 단계 중 하나는 적절한 경우 서버리스 추론을 활용하는 것입니다. 전통적으로 AI 모델은 시간당 지불되는 연중무휴 24시간 실행 전용 GPU가 필요합니다. 서버리스 추론 엔드포인트를 사용하면 팀은 시간당 비용을 지불하고 설정 및 유지 관리를 직접 관리하는 대신 토큰 단위로 많은 오픈 소스 모델을 사용할 수 있습니다. 이를 통해 팀은 필요한 만큼의 사용량과 규모에 대해서만 비용을 지불할 수 있으므로 새 제품을 실행하는 데 드는 비용이 절감되었습니다.
서버리스 아키텍처가 한동안 존재했지만 사용자 정의 또는 미세 조정 모델을 갖춘 팀은 여전히 GPU 사용량에 대해 시간당 요금을 지불하는 경우가 많습니다. 그러나 미세 조정된 모델을 호스팅하고 토큰당 지불 방식의 서버리스 엔드포인트를 통해 이를 제공할 수 있습니다. 미세 조정된 모델을 서버 없이 호스팅하는 방법과 이를 통해 얻을 수 있는 이점과 단점을 살펴보겠습니다.
주요 시사점
- LoRA와 같은 매개변수 효율적인 미세 조정 방법을 사용하면 고정된 공유 기본 모델 위에 계층화할 수 있는 작은 어댑터 가중치를 생성하여 사용자 지정 모델의 서버리스 호스팅을 실용적으로 만들 수 있습니다. 이는 플랫폼이 단일 GPU에서 수백 개의 미세 조정된 변형을 제공할 수 있으므로 모델별 전용 배포가 필요하지 않음을 의미합니다.
- 폭발적이거나 예측할 수 없는 트래픽이 있는 팀은 서버리스로 미세 조정된 엔드포인트로 전환하여 24시간 내내 GPU를 실행하는 대신 사용하는 토큰에 대해서만 비용을 지불함으로써 추론 비용을 줄일 수 있습니다. 훈련된 어댑터를 관리형 플랫폼에 업로드하면 인프라 설정 없이 몇 분 만에 라이브 API 엔드포인트가 생성되므로 배포도 더 빨라집니다.
- 세밀하게 조정된 모델을 사용한 서버리스 추론의 주요 장단점은 콜드 스타트입니다. 즉, 유휴 어댑터가 요청을 처리하기 전에 스토리지에서 다시 로드되어 최대 수백 밀리초의 지연 시간이 추가됩니다. 이는 주기적인 연결 유지 요청으로 완화될 수 있으며 경량 어댑터 가중치만 가져오면 되므로 전체 모델 콜드 스타트보다 지연 시간이 더 적습니다.
지원되는 미세 조정 방법
여기서 명확히 하는 것이 중요합니다. 이 맥락에서 "미세 조정"은 모델의 모든 가중치가 새 데이터에 대해 처음부터 다시 학습되는 전통적인 완전 미세 조정을 의미하지 않습니다. 완전한 미세 조정은 비용이 많이 들고 시간이 많이 소요되며 원본만큼 큰 완전히 새로운 모델을 생산합니다. 해당 모델을 서버리스로 호스팅하는 것은 여러 사용자가 공유할 수 없기 때문에 비실용적입니다. 전용 GPU 배포가 필요합니다.
매개변수 효율적 미세 조정(PEFT)은 모든 가중치를 다시 훈련하는 대신 가중치의 작은 하위 집합만 업데이트하므로 원래 모델은 고정된 상태로 유지됩니다. 이로 인해 사용자 정의를 나타내는 훨씬 더 작은 추가 가중치 세트가 생성되는 반면, 무거운 기본 모델은 변경되지 않고 관련되지 않은 다양한 사용자 간에 공유 가능합니다.
가장 널리 사용되는 PEFT 방법은 LoRA(Low-Rank Adaptation)입니다. LoRA는 모델의 기존 가중치를 직접 수정하는 대신 고정된 기본 모델 위에 학습 가능한 작은 어댑터 행렬을 추가합니다. 이러한 어댑터는 기본 모델 자체의 수십 또는 수백 기가바이트에 비해 단 몇 메가바이트의 무게로 작업별 동작을 캡처합니다. LoRA는 또한 QLoRA, DoRA, LoRA+를 포함한 여러 변형으로 제공되며 모두 서버리스 추론 플랫폼에서 널리 지원됩니다.
기본 모델은 동결되어 모든 사용자에게 동일하므로 플랫폼은 이를 GPU 메모리에 한 번 로드하고 공유할 수 있습니다. 그런 다음 요청 시 각 사용자의 LoRA 어댑터를 맨 위에 로드할 수 있으므로 단일 GPU에서 수백 개의 미세 조정된 변형을 제공하는 것이 실용적입니다. 미세 조정된 모델에 대해 서버리스 추론을 지원하는 플랫폼은 일반적으로 특정 기본 모델에서만 이를 지원한다는 점에 유의하는 것도 중요합니다. 따라서 지원되는 기본 모델 중 하나에 대해 교육을 받은 LoRA 어댑터가 필요합니다.
여러 LoRA 어댑터 관리
LoRA 어댑터 가중치(일반적으로 각각 10~100MB 사이)는 추론 서버에서 관리하는 빠른 개체 저장소 또는 메모리 내 캐시에 저장됩니다. 특정 어댑터에 대한 요청이 도착하면 서비스 제공 시스템은 해당 가중치를 가져와 즉시 순방향 전달에 융합합니다.
이 융합 과정은 가볍습니다. LoRA가 적용되는 각 변환기 계층에서 어댑터는 계층의 출력에 낮은 순위 보정을 생성하는 두 개의 작은 행렬을 추가합니다. 추론 중에 서버는 기본 레이어의 출력을 계산한 다음 몇 가지 추가 CUDA 작업에 LoRA 보정을 추가합니다. 기본 가중치는 수정되지 않으므로 요청 간에 어댑터를 교환하려면 기본 모델을 다시 로드하거나 CUDA 커널을 다시 시작하는 대신 GPU 레지스터에 있는 작은 행렬 쌍만 교체하면 됩니다.
가장 큰 과제 중 하나는 단일 인스턴스에서 작동하는 수백 개의 어댑터를 사용한 메모리 관리입니다. 추론 서버는 가장 최근에 가장 자주 사용된 어댑터 가중치의 작은 상주 캐시를 VRAM에 직접 유지해야 합니다. 다른 어댑터는 VRAM에서 제거되어 CPU RAM이나 객체 스토리지에 다시 저장되므로 다시 로드 시간이 수백 밀리초 정도 단축됩니다.
배치 프로세스는 사용되는 LoRA 방법에 따라 다를 수 있습니다. 어댑터를 공유하는 요청은 일반적으로 각 하위 그룹에 대한 수정이 실행되기 전에 하위 배치로 그룹화되지만 S-LoRA와 같은 일부 시스템은 서로 다른 어댑터의 요청을 동일한 순방향 패스로 묶고 활성 어댑터를 통합 메모리 풀에 저장한 다음 서로 다른 어댑터 수정을 서로 다른 시퀀스 위치에 동시에 적용할 수 있는 맞춤형 CUDA 커널로 이를 처리합니다. 이 접근 방식을 LoRA 다중화라고도 합니다. 이를 통해 트래픽이 한 번에 여러 가지 미세 조정된 변형에 분산되어 있는 경우에도 GPU가 포화 상태를 유지할 수 있습니다. vLLM은 또한 시간당 임대하는 GPU에서 LoRA 어댑터를 교체하는 데 관심이 있는 사용자를 위해 기본적으로 LoRA 멀티플렉싱을 지원합니다.
KV 캐시 항목은 해당 항목을 생성한 어댑터에 연결됩니다. 하나의 어댑터로 생성된 캐시 항목은 다른 어댑터를 사용하는 요청에 재사용할 수 없습니다. 이로 인해 궁극적으로 단일 모델 배포보다 다중 어댑터 설정에서 KV 캐시 적중률이 낮아지며 추론 서버는 요청의 프롬프트 토큰과 어댑터 식별자 모두를 기준으로 캐시 항목의 키를 지정해야 합니다.
서버리스 미세 조정 사용의 실제 영향
서버리스 미세 조정의 강점은 일관되지 않은 트래픽 버스트가 있어 연중무휴 24시간 실행되는 GPU를 예약하는 것이 필요하지 않거나 비용 효율적이지 않은 새로운 서비스를 구축하는 팀에서 가장 분명합니다. 밤새 유휴 시간에 대해 고정된 GPU 시간 요금을 지불하는 대신 요청에서 얻은 토큰에 대해서만 비용을 지불하면 됩니다. 서버리스 아키텍처로 전환하면 추론 비용을 대폭 절감할 수 있습니다.
배포 속도도 훨씬 빠릅니다. LoRA 어댑터가 학습된 후 이를 관리형 추론 플랫폼에 업로드하면 클러스터 프로비저닝, 컨테이너 오케스트레이션 또는 GPU 드라이버 관리 없이 몇 분 만에 라이브 API 엔드포인트가 생성됩니다. 이는 인프라 부담을 단순화하여 팀이 모델과 제품에 집중할 수 있도록 해줍니다. 기본 모델이 효율적이고 저렴하게 공유되고 실행되더라도 여전히 모델 동작에 대한 제어를 유지할 수 있으며 어댑터 가중치를 소유하고 있습니다.
서버 없이 미세 조정된 모델을 호스팅할 때의 가장 큰 단점은 콜드 스타트입니다. 어댑터가 일정 기간 동안 트래픽을 수신하지 않으면 추론 플랫폼은 일반적으로 이를 0으로 조정하고 GPU 메모리에서 가중치를 제거한 다음 다른 사용자를 위해 VRAM을 회수합니다. 이는 시스템이 객체 저장소에서 가중치를 가져와 로드하고 정방향 전달을 시작하는 동안 다음 사용자가 기다려야 함을 의미합니다. 어댑터가 작기 때문에 일반적으로 몇 초가 아닌 수백 밀리초 정도 걸립니다. 주의할 점은 기본 모델이 자주 사용되지 않고 자체가 제거된 경우(일부 아키텍처에서는 가능함) 콜드 스타트에 더 오랜 시간이 걸릴 수 있다는 점입니다. 콜드 스타트는 첫 번째 토큰 이후에 토큰이 생성되는 속도인 출력 토큰당 시간에 영향을 주지 않고 TTFT(Time-to-First-Token)를 특별히 급증시킵니다. TTFT는 스트리밍 지연 시간을 최소화하려는 팀을 관찰하는 측정항목입니다.
콜드 스타트는 몇 가지 방법으로 완화될 수 있습니다. 첫째, 트래픽이 적은 시간 동안 주기적으로 연결 유지 요청을 보내도록 아키텍처를 설정할 수 있습니다. 둘째, LoRA 어댑터를 훈련할 때 더 효율적으로 로드할 수 있도록 조치를 취할 수 있습니다. 훈련 중에 어댑터의 크기와 표현력은 순위 또는 'r'이라는 하이퍼 매개변수에 의해 제어됩니다. 랭크 8 어댑터는 랭크 16 어댑터에 비해 훈련 가능한 매개변수의 대략 절반을 생성합니다. 다른 모든 것이 동일하다면 랭크 8 어댑터는 콜드 스타트에서 더 빠른 TTFT를 갖습니다. 또한 파일 크기와 추론 오버헤드를 변경하기 위해 변환기 레이어 LoRA가 적용됩니다. LoRA는 각 Attention 블록의 쿼리 및 값 투영 행렬에 일반적으로 적용되지만 MLP(Multi-layer-perceptron) 레이어에 적용하면 모델을 특정 도메인에 적용하려고 할 때 품질을 향상시킬 수 있습니다.
결론
서버리스로 미세 조정된 추론은 앞으로 점점 더 인기를 끌 가능성이 높습니다. 현재 LLM 환경은 더 크고 더 나은 추론을 제공하는 모놀리식 모델을 확장하는 데 중점을 두고 있습니다. 많은 전문 모델이 함께 작동하는 아키텍처에는 덜 관심이 집중되었습니다. 결국 커뮤니티는 이러한 종류의 아키텍처가 잘 작동하는 많은 모델과 사용 사례를 관리하는 더 나은 방법을 찾을 것입니다. 그런 경우 LoRA 멀티플렉싱은 합리적인 비용으로 많은 맞춤형 에이전트를 관리하려는 팀에 도움이 될 것입니다.
아직 답변을 찾고 계신가요?
이 저작물은 Creative Commons Attribution-NonCommercial- ShareAlike 4.0 International에 따라 라이센스가 부여됩니다. 라이센스.