Ampere A2 클러스터에서 정량화된 GGUF 대형 언어 모델 실행

컴퓨팅 인프라 부족으로 인한 지역별 AI 격차가 증가하고 있습니다. 대부분의 모던 대규모 언어 모델(LLM)은 효과적으로 훈련하기 위해 상당한 수의 전문화된 고성능 GPU가 필요합니다. 각 서버가 잠재적으로 6자리 가격과 압박을 받고 있는 글로벌 공급망에서는 이러한 필수 리소스에 계속 액세스할 수 없습니다. 증가하는 AI 격차에 대한 해결책을 모색하는 동안 GPU 병목 현상의 유망한 대안인 놀라운 Ampere A2 프로세서가 등장했습니다. 잠재력에 흥미를 느끼며 Ampere A2 클러스터를 기반으로 구축된 LLM 구현을 설계했습니다. 결과는 놀랍습니다. 최첨단 GPU 어레이의 원시 마력과 일치하지는 않지만, 이러한 시스템은 시간당 단순한 페니를 위해 실용적인 검색 증강 생성(RAG) 애플리케이션을 성공적으로 구동할 수 있습니다.

구조

이 Arm 기반 아키텍처는 기존 AI 인프라 비용의 일부만으로 탁월한 가치의 LLM 구현을 제공합니다. 이 아키텍처는 AI를 시작하기 위한 예산 친화적인 접근 방식을 제공합니다.

OCI 공용 로드 밸런서는 유입 트래픽을 컴퓨트 인스턴스 풀로 분산하여 맨 앞에 있습니다. Ampere A2 노드의 인스턴스 풀이 있습니다. 각 노드는 Ubuntu를 실행하는 2코어 Arm 기반 컴퓨트 인스턴스입니다. 노드는 OCI 인스턴스 풀에서 관리되므로 트래픽이 증가함에 따라 수평적으로 쉽게 확장할 수 있습니다. 인터넷 게이트웨이는 필요할 때 로드 밸런서 및 백엔드 인스턴스에 모두 퍼블릭 액세스를 제공합니다.

각 Ampere A2 컴퓨트 인스턴스는 Ubuntu 22.04(Arm), llama.cpp를 사용하여 로컬에서 제공되는 정량화된 GPT 생성 통합 형식(GGUF) LLM(예: TinyLlama 또는 Phi-2), NGINX를 통해 제공되는 간단한 HTML/JS 랜딩 페이지, UI의 프롬프트를 처리하고 모델 출력을 페이지로 다시 스트리밍하는 llama-cpp-python에 유선된 Python 기반 백엔드를 실행합니다.

풀의 각 컴퓨트 노드는 경량이지만 완전히 자급자족하도록 설계되었습니다. 실행 시 LLM을 처음부터 제공하는 데 필요한 모든 것을 설치하고 실행하는 cloud-init 스크립트를 사용하여 자체 부트스트랩됩니다. 노드는 다음과 같이 구성됩니다.

  • 종속성 설치: build-essential, cmake, git, NGINX 및 python3-pip과 같은 종속성이 자동으로 설치됩니다. llama-cpp-python은 완전한 ARM64 호환성을 보장하기 위해 소스에서 컴파일됩니다.
  • 빌드: 노드는 GitHub에서 최신 버전의 llama.cpp를 가져오고, 최적화된 CPU 추론을 위해 OpenBLAS를 사용하여 빌드하며, 모든 것을 로컬로 유지하면서 GPU 또는 추론 API에 대한 외부 런타임 종속성을 유지합니다.
  • 모델 다운로드: 정량화된 GGUF 모델(TinyLlama 또는 이와 유사한 모델)이 Hugging Face에서 직접 인출되어 models 디렉토리에 배치됩니다.
  • 랜딩 페이지 서비스: 포트 80에서 NGINX를 통해 최소한의 HTML/JavaScript UI가 제공됩니다. UI를 통해 사용자는 프롬프트를 제출하고 브라우저에서 직접 LLM 응답을 볼 수 있습니다.
  • Python을 통한 추론 처리: 작은 Python 백엔드는 llama-cpp-python을 사용하여 로컬 모델과 상호 작용합니다. 사용자가 질문을 제출할 때 랜딩 페이지가 POST 요청을 전송하는 /generate 엔드포인트를 노출합니다.
  • 부트 시 시작: 모든 항목이 systemd 서비스에 래핑되므로 인스턴스 재부트 또는 실패 시 추론이 자동으로 재시작되므로 수동으로 터치할 필요가 없습니다.

다음 다이어그램은 이 참조 구조를 보여줍니다.



장-아이암페어-그루프-llm-arch.zip

아키텍처의 구성 요소는 다음과 같습니다.

  • 지역

    OCI 리전은 가용성 도메인을 호스팅하는 데이터 센터가 하나 이상 포함된 지역화된 지리적 영역입니다. 지역은 다른 지역과 독립적이며, 광대한 거리는 (국가 또는 대륙에 걸쳐) 그들을 분리 할 수 있습니다.

  • 가용성 도메인

    가용성 도메인은 한 지역 내의 독립형 독립형 데이터 센터입니다. 각 가용성 도메인의 물리적 리소스는 내결함성을 제공하는 다른 가용성 도메인의 리소스와 격리됩니다. 가용성 도메인은 전원 또는 냉각과 같은 인프라나 내부 가용성 도메인 네트워크를 공유하지 않습니다. 따라서 한 가용성 도메인의 장애가 해당 지역의 다른 가용성 도메인에 영향을 미치지 않아야 합니다.

  • 결함 도메인

    장애 도메인은 가용성 도메인 내의 하드웨어 및 인프라 그룹을 의미합니다. 각 가용성 도메인에는 3개의 장애 도메인과 독립적인 전원 및 하드웨어가 있습니다. 여러 결함 도메인에 리소스를 분산할 때 응용 프로그램은 결함 도메인 내에서 물리적 서버 실패, 시스템 유지 관리 및 정전이 발생할 수 있습니다.

  • VCN(가상 클라우드 네트워크에 연결) 및 서브넷

    VCN은 OCI 리전에 설정하는 커스터마이징 가능한 소프트웨어 정의 네트워크입니다. 기존 데이터 센터 네트워크와 마찬가지로 VCN을 사용하면 네트워크 환경을 제어할 수 있습니다. VCN에는 VCN을 생성한 후 변경할 수 있는 겹치지 않는 CIDR(클래스리스 도메인 간 경로 지정) 블록이 여러 개 있을 수 있습니다. VCN을 서브넷으로 분할할 수 있으며, 이 서브넷은 지역 또는 가용성 도메인으로 범위가 지정될 수 있습니다. 각 서브넷은 VCN의 다른 서브넷과 겹치지 않는 연속적인 주소 범위로 구성됩니다. 썸네일의 크기는 생성 이후 변경할 수 있습니다. 서브넷은 공용 또는 전용일 수 있습니다.

  • 로드 밸런서

    Oracle Cloud Infrastructure Load Balancing은 단일 시작점에서 여러 서버로의 자동 트래픽 분산을 제공합니다.

  • 인터넷 게이트웨이

    인터넷 게이트웨이는 VCN의 공용 서브넷과 공용 인터넷 간의 트래픽을 허용합니다.

  • 인스턴스 풀

    인스턴스 풀은 동일한 인스턴스 구성에서 생성되고 그룹으로 관리되는 영역 내 인스턴스 그룹입니다.

고려사항

이 구조를 구현하기 전에 다음 사항을 고려하십시오.

  • Ampere A2 컴퓨트 인스턴스 비용

    각 노드는 OCPU 2개와 RAM 16GB로 Ampere A2를 실행합니다. 이 OCPU의 가격은 현재 시간당 OCPU당 $0.01입니다. 월간 비용은 1 노드가 항상 켜져있는 $ 14.40까지 작동합니다.

  • 로드 밸런서 비용

    공용 로드 밸런서(작은 구성)의 가격은 현재 시간당 약 $0.029입니다. 월 비용은 약 21 달러에 달합니다. 다른 Ampere 인스턴스에 커스터마이징 로드 밸런서를 설정하여 비용을 추가로 절감할 수 있습니다.

  • 스토리지 원가

    각 노드는 OS, llama.cpp 및 약 5-6GB의 모델을 저장합니다. 기본 부트 볼륨은 약 50GB입니다. 매월 처음 200GB는 무료입니다.

자세히 살펴보기

Oracle Cloud Infrastructure에서 Ampere A2 클러스터에서 GGUF LLM을 실행하는 방법에 대해 자세히 알아보십시오.

다음 추가 리소스를 검토하십시오.

승인

  • 작성자: Badr Tharwat