Unikraft로 Llama 2 Everywhere 배포하기: 초경량 AI 마이크로서비스 구축

Llama 2 Everywhere(L2E)는 llama2.c를 기반으로 한 오소스 추론 프레임워크입니다. 다양한 하드웨어에서 소형 LLM을 실행하는 것을 목표로 하며, Unikraft와 결합하면 전통적인 가상머신 대비 훨씬 작은 운영체제 이미지로 AI 추론 서비스를 제공할 수 있습니다. 이 문서에서는 Unikernel 기술을 활용해 L2E를 립적인 AI 마이크로서비스로 구축하고 실행하는 방법을 살펴봅니다.

Unikernel인가?

Unikraft는 애플리케이션에 필요한 운영체제 기능만 선택적으로 연결해 단일 바이너리로 만드는 unikernel 드 도구입니다. L2E와 결합하면 다음과 같은 효과를 얻습니다.

  • 최소 메모리 사용: KVM 위에서 256MB 메모리만으로 동작합니다.
  • 빠른 부팅: 불필요한 커널 모듈과 데을 제거해 수 초 내에 서비스가 시작됩니다.
  • 격리된 실행: 각 마이크로서비스가 별도의 unikernel로 실행되어 공격 면을 줄입니다.
  • 높은 집적도: 한 대의 호스트에서 더 많은 추론 인스턴스를 배치할 수 있습니다.

개발 환경 준비

호스트 신에 다음 구성 요소가 설치되어 있어야 합니다.

  • Linux 호스트
  • QEMU/KVM
  • git, make
  • x86_64 빌드 도구체인

저장소를 받습니다.

git clone <L2E 저장소> l2e
cd l2e

Unikernel 이미지 빌드

L2E는 Unikraft와 musl 라이브러리를 자동으로 가져오는 빌드 타겟을 제공합니다. 별도로 소스를 준비할 필요 없이 다음 명령을 실행하면 됩니다.

export UK_TARGET=L2E_qemu-x86_64
make l2e_unik_qemu_latest

빌드가 완료되면 build/${UK_TARGET} 경로에 커널 이미지가 생성됩니다.

QEMU에서 Unikernel 실행

생성된 이미지를 KVM 가속과 함께 실행합니다.

qemu-system-x86_64 \
  -m 256m \
  -accel kvm \
  -kernel build/${UK_TARGET}

터미널에서만 로그를 확인하려면 -nographic 옵션을 추가합니다.

qemu-system-x86_64 \
  -m 256m \
  -accel kvm \
  -kernel build/${UK_TARGET} \
  -nographic

성능 최적화

L2E는 다양한 드 타겟을 제공합니다. 환경에 맞는 타겟을 선택하세요.

  • run_cc_fast: 표준 준수를 완화한 고속 빌드
  • run_cc_openmp: OpenMP 기반 병렬 처리 빌드
  • run_cc_clblast: CLBlast를 활용한 OpenCL GPU 가속 빌드
  • run_cc_omp_gnu: GNU OpenMP 최적화 빌드

실제 운영 경에서는 다음 사항을 고려하세요.

  • 모델 크기에 따라 메모리를 -m 512m 이상으로 늘립니다.
  • CPU 화도를 고정해 NUMA 노드 내에서 처리하도록 설정합니다.
  • BLAS 구현체(OpenBLAS, BLIS 등)를 비교해 가장 빠른 라이브러리를 연결합니다.
  • 대규모 배포 시 컨테이너 오케스트레이션 대신 단일 unikernel 인스턴스당 하나의 추론 워커를 배치합니다.

태그: Llama2Everywhere Unikraft Unikernel llama2.c QEMU

8월 22일 22:31에 게시됨