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 인스턴스당 하나의 추론 워커를 배치합니다.