AI와 머신러닝의 발전은 다양한 하드웨어에서 최적의 성능을 낼 수 있는 솔루션이 필요하다는 요구를 불러일으켰습니다. 이러한 필요를 충족시키기 위해 등장한 ZML은 모든 모델과 하드웨어에서 최상의 성능을 제공하는 오픈소스 프로젝트입니다. ZML은 특정 하드웨어에 종속되지 않고 다양한 AI 작업을 지원하는 데 초점을 맞추고 있습니다. 이 글에서는 ZML의 주요 기능과 사용법, 그리고 실무에서의 활용 가능성을 자세히 알아보겠습니다.

ZML의 주요 기능

ZML은 다음과 같은 독특한 기능을 제공합니다:

  1. 다양한 하드웨어 지원: NVIDIA, AMD, TPU, Trainium 등 다양한 하드웨어에서 최적의 성능을 낼 수 있도록 설계되었습니다. 한 번의 코드 작성으로 여러 하드웨어에서 실행 가능합니다.
  2. Zig 언어 기반: ZML은 Zig 언어로 개발되어 성능과 안전성을 동시에 제공합니다. Zig는 메모리 안전성이 뛰어난 언어로, 높은 성능의 애플리케이션을 구축하는 데 적합합니다.
  3. MLIR 및 Bazel 통합: MLIR (Multi-Level Intermediate Representation)을 활용하여 컴파일러 최적화를 극대화하고, Bazel을 통해 복잡한 빌드 프로세스를 관리합니다.
  4. 간편한 모델 로딩 및 실행: Hugging Face와 통합되어 다양한 모델을 손쉽게 로드하고 실행할 수 있습니다.
  5. 설치 가이드

    ZML을 시작하는 데 필요한 단계는 다음과 같습니다. 우선, Bazel을 설치해야 합니다.

    macOS 설치

    brew install bazelisk

    Linux 설치

    curl -L -o /usr/local/bin/bazel 'https://github.com/bazelbuild/bazelisk/releases/download/v1.28.0/bazelisk-linux-amd64'
    chmod +x /usr/local/bin/bazel

    이제 ZML을 실행해 볼 준비가 되었습니다. 간단한 테스트를 통해 설치가 제대로 되었는지 확인해보겠습니다.

    30초 스모크 테스트

    ZML의 MNIST 예제를 실행해 보겠습니다. 이 예제는 미리 훈련된 MNIST 모델을 다운로드하고, 가중치를 로드한 후 무작위로 선택된 손글씨 숫자를 분류합니다.

    bazel run //examples/mnist

    이 명령어를 실행하면, MNIST 데이터셋을 기반으로 한 숫자 분류 작업이 자동으로 수행됩니다.

    LLM 빠른 시작

    ZML에서 제공하는 LLM(대형 언어 모델) 예제를 사용해 보겠습니다. 현재 Llama, Qwen, LFM 모델을 지원하며, Hugging Face와 통합되어 있습니다.

    모델 인증

    Hugging Face의 게이트된 모델에 접근하려면 인증이 필요합니다. 아래 명령어를 실행하여 로그인해 주세요.

    bazel run //tools/hf -- auth login

    혹은 환경 변수 HF_TOKEN을 설정해도 됩니다.

    모델 실행 예

    아래와 같이 Llama 모델을 사용하여 프롬프트를 실행할 수 있습니다.

    bazel run //examples/llm -- --model=hf://meta-llama/Llama-3.2-1B-Instruct --prompt="프랑스의 수도는?"

    프롬프트 없이 실행하면 대화형 채팅 루프가 열립니다.

    bazel run //examples/llm -- --model=hf://meta-llama/Llama-3.2-1B-Instruct

    또한 로컬 디렉터리 또는 S3에서 모델을 로드할 수도 있습니다.

    GPU / TPU에서 모델 실행하기

    ZML은 다양한 플랫폼에서의 실행을 지원합니다. 원하는 플랫폼에 맞춰 플래그를 추가하여 모델을 실행해 보세요.

    NVIDIA CUDA에서 실행

    bazel run //examples/llm --@zml//platforms:cuda=true -- --model=hf://meta-llama/Llama-3.2-1B-Instruct --prompt="Zig에 관한 하이쿠를 써줘"

    AMD ROCm에서 실행

    bazel run //examples/llm --@zml//platforms:rocm=true -- --model=hf://meta-llama/Llama-3.2-1B-Instruct --prompt="Zig에 관한 하이쿠를 써줘"

    이렇게 설정함으로써, 특정 하드웨어에 최적화된 성능을 경험할 수 있습니다.

    테스트 실행

    ZML의 기능을 검증하기 위해 다음 명령어로 테스트를 실행할 수 있습니다.

    bazel test //zml:test

    실무에서의 활용 시나리오

    ZML은 다양한 AI 애플리케이션에 활용될 수 있습니다. 예를 들어, 고객 상담 챗봇, 데이터 분석 도구, 이미지 인식 시스템 등에서 ZML을 사용하여 모델을 쉽게 배포하고 실행할 수 있습니다. 특히, 여러 하드웨어에서 동일한 코드를 통해 최적의 성능을 낼 수 있기 때문에 하드웨어에 따른 성능 저하를 방지할 수 있습니다.

    비슷한 도구와의 비교

    ZML과 유사한 도구로는 TensorFlow, PyTorch 등이 있습니다. 그러나 ZML은 하드웨어 간의 독립성을 강조하며, Zig 언어를 통해 더욱 세밀한 최적화를 가능하게 하는 점에서 차별화됩니다. 또한, MLIR를 통한 컴파일러 최적화 덕분에 대규모 AI 모델의 효율적인 배포가 가능합니다.

    추천 대상

    ZML은 다음과 같은 개발자들에게 추천합니다:

    • AI 및 머신러닝 모델을 다양한 하드웨어에서 실행하고자 하는 개발자
    • Zig 언어에 관심 있는 프로그래머
    • MLIR 및 Bazel을 활용한 최적화된 빌드를 원하는 팀

ZML은 AI 모델을 하드웨어에 구애받지 않고 효율적으로 운영할 수 있는 강력한 도구입니다. 다양한 기능을 직접 체험해보시길 권장합니다. 자세한 정보는 ZML 공식 문서 및 GitHub 페이지를 방문해 주세요.

GitHub 링크