2P by neo 6달전 | favorite | 댓글 1개

llamafile 프로젝트 요약

  • AI 개발자들이 어디서나 빌드하고 실행할 수 있는 꿈을 실현하기 위해 llama.cpp와 Cosmopolitan Libc를 결합한 프레임워크 개발
  • llamafile은 다양한 CPU 마이크로아키텍처 및 CPU 아키텍처에서 실행 가능하며, 여러 운영 체제에서 단일 빌드로 코드 실행 지원
  • LLM의 가중치를 llamafile 내에 포함시켜 직접 메모리 매핑을 통해 빠른 실행 가능

바이너리 사용법

  • Hugging Face를 통해 다운로드 가능한 여러 모델의 예제 바이너리 제공
  • 커맨드 라인 바이너리는 llama.cpp의 "main" 함수를 수동으로 호출하는 것과 같이 실행
  • 서버 바이너리는 로컬 웹 서버를 실행하여 웹 기반 챗봇 제공

주의사항

  • macOS에서 Apple Silicon 사용 시 Xcode 설치 필요
  • Windows에서는 파일 이름을 llamafile.exe로 변경해야 실행 가능
  • zsh, Python subprocess, Fish 등에서 실행 문제 발생 시 대체 명령어 사용 권장
  • Linux에서 binfmt_misc 문제 발생 시 해결 방법 제공

GPU 지원

  • Apple Silicon에서는 Xcode 설치 시 자동으로 작동
  • Linux에서는 Nvidia cuBLAS GPU 지원을 위한 컴파일러 설치 및 플래그 설정 필요
  • Windows에서는 MSVC x64 네이티브 커맨드 프롬프트를 통한 첫 실행 후 CUDA 경로 설정 필요

소스 코드 빌드 방법

  • cosmocc 툴체인을 사용하여 llamafile 소스 코드 빌드 방법 안내
  • libc 함수 코드 생성 및 HTTP 서버 실행 예제 제공

zipalign 문서

  • PKZIP 아카이브에 정렬된 압축되지 않은 파일 추가를 위한 zipalign 도구 사용법 설명
  • 기존 ZIP 아카이브 도구보다 빠른 실행 및 메모리 정렬 요구 사항 충족

기술적 세부사항

  • llamafile은 쉘 스크립트와 가중치를 결합하여 빠른 실행을 가능하게 하는 mmap() 기능 활용
  • ZIP 가중치 포함, 마이크로아키텍처 및 아키텍처 이식성, GPU 지원에 대한 기술적 해결책 제시

라이선스

  • llamafile 프로젝트는 Apache 2.0 라이선스를 사용하며, llama.cpp에 대한 변경 사항은 MIT 라이선스 적용

알려진 문제

  • 64비트 Windows에서는 4GB 파일 크기 제한이 있어, 가중치를 별도의 파일로 사용해야 함

GN⁺의 의견

이 글에서 가장 중요한 것은 AI 개발자들이 어디서나 손쉽게 LLM을 빌드하고 실행할 수 있도록 하는 llamafile 프로젝트의 혁신적인 접근 방식임. 이 프로젝트는 다양한 플랫폼과 아키텍처에서의 호환성을 제공하며, 가중치를 포함한 단일 파일로 배포함으로써 사용의 편리성을 크게 향상시킴. 이러한 기술적 발전은 AI 연구와 개발을 더욱 가속화할 수 있는 잠재력을 가지고 있어, 이 분야에 관심 있는 사람들에게 매우 흥미로운 내용임.

Hacker News 의견
  • LLaVA 모델 사용 방법

    • macOS에서 LLaVA 모델을 시험해보는 최선의 방법은 텍스트와 이미지를 결합한 모델(GPT-4 Vision과 유사)을 사용하는 것임.
    • macOS에서 실행하는 방법을 단계별로 설명하며, 다른 플랫폼에서도 비슷하게 작동할 것으로 예상함(아직 시도하지는 않음).
      1. Hugging Face에서 4.26GB 크기의 llamafile-server-0.1-llava-v1.5-7b-q4 파일 다운로드
      2. 터미널에서 실행 권한 부여
      3. 실행 파일을 실행하여 8080 포트에서 웹 서버 시작
      4. 브라우저에서 http://127.0.0.1:8080/로 이동하여 이미지 업로드 및 모델과 대화 시작
  • macOS 앱 개발 경험 공유

    • Justine Tunney / jart의 뛰어난 이식성 작업에 대한 감탄과 함께, 개발자는 자신의 macOS 앱에서 llama.cpp를 SwiftUI 프론트엔드와 함께 실행함.
    • 앱의 첫 버전에서는 단일 다운로드 후 채팅 흐름과 네트워크 연결을 하지 않는 것에 집중함.
    • 모델을 앱에 번들로 제공하여 다운로드 후 바로 사용할 수 있었으나, UI 업데이트를 배포할 때마다 사용자들이 3GB를 다시 다운로드해야 하는 문제 발생.
    • 사용자들의 불만 후, 기본 모델 다운로드와 UI를 분리하여 앱 업데이트 시 5MB 정도만 배포하게 변경함.
    • 이 도구를 사용하는 사람들이 llama.cpp 업데이트를 원할 때 비슷한 문제에 직면할 것으로 예상하며, 이러한 문제가 중요하지 않은 경우가 있을지 궁금함.
  • Simon Willison의 관련 포스트 추천

    • Simon Willison의 관련 포스트에 대한 추천 링크 제공.
  • 관련 링크 공유

    • Mozilla의 llamafile 소개와 Justine Tunney의 트윗에 대한 링크 공유.
  • Llaminate라는 이름 제안

    • Llama 호환 모델을 사용할 준비가 된 blob으로 래핑하는 일반적인 작업을 위한 'Llaminate'라는 이름 제안.
  • Cosmopolitan을 사용한 CUDA 지원에 대한 감탄

    • Cosmopolitan이 이번 달에 GPU를 활성화하기 위해 동적 링킹을 위한 지원을 추가한 것에 대한 감탄.
    • CUDA 개발자 툴킷 설치가 필요하지만, Nvidia 드라이버 외에는 별도의 의존성 없이 CUDA 앱을 배포할 수 있는 가능성에 대한 흥미.
  • Windows에서의 실행 파일 크기 제한 언급

    • Windows 10 64비트 시스템에서 4GB 실행 파일이 잘 작동하는 경험 공유.
  • llama.cpp의 다양한 모델 실험 방법 공유

    • GitHub에서 llama.cpp를 클론하고, 필요한 모델을 다운로드하여 서버를 실행하는 방법을 코드와 함께 공유.
  • 단일 모델과 가중치로만 작동하는 바이너리에 대한 제한성 지적

    • 하나의 모델과 가중치 세트만 실행하는 바이너리의 제한성에 대한 의견 제시.
  • Justine의 놀라운 프로젝트 창출 속도에 대한 언급

    • Justine이 놀라운 속도로 놀라운 프로젝트를 만들어내고 있음에 대한 언급.