본문으로 건너뛰기

도구·서비스

로컬 AI 엔진 llama.cpp 1.0 공개…구형 함수 35개 삭제

편집·검토: AI Ping 편집팀

3줄 요약

  1. llama.cpp와 기반 라이브러리 ggml이 11월 13일 1.0.0을 공개했다.
  2. 공개 인터페이스의 호환성을 깨는 변경은 앞으로 버전의 첫 숫자로 알린다.
  3. 삭제된 함수를 쓰는 앱은 코드를 고쳐야 하며, 기존 개발 빌드도 계속 배포된다.
실무개발자
나무 책상에 놓인 가상의 노트북과 소형 PC
AI 생성 개념 이미지: 노트북과 소형 PC로 로컬 AI 모델을 실행하는 개인용 환경을 표현했다. · AI Ping

오픈 AI 모델을 개인 컴퓨터나 자체 서버에서 돌리는 실행 도구 llama.cpp가 11월 13일 버전 1.0.0을 공개했다. 개발팀은 앞으로 앱이 호출하는 공개 C 인터페이스나 이미 빌드한 앱이 라이브러리와 연결되는 규칙을 호환되지 않게 바꿀 때 버전의 첫 숫자를 올리겠다고 밝혔다. 이번 1.0.0에서는 공개 헤더에서 이미 폐기 예고를 받은 함수 35개를 삭제했다.

llama.cpp를 내장한 앱을 만드는 개발자는 출시 번호로 어떤 종류의 변경이 들어왔는지 가늠할 수 있게 됐다. 다만 0.9.0 등 이전 버전에서 삭제된 함수를 호출하는 앱은 1.0.0으로 올릴 때 호출 코드를 고치고 다시 빌드해야 한다. 같은 날 행렬과 같은 수치 배열을 처리하는 기반 라이브러리 ggml도 1.0.0을 공개했다. 두 프로젝트의 공개 규칙은 라이브러리를 직접 연결하는 앱과 배포 패키지에 적용된다.

1.0.0으로 바꿀 때 손봐야 할 코드

공개 C 인터페이스는 앱이 함수 이름과 인자 형식 등을 맞춰 라이브러리를 호출하는 약속이다. 앱의 소스가 그 약속을 쓰고, 컴파일된 앱은 실행할 때 정해진 형태로 라이브러리와 연결된다. 개발팀이 두 수준의 호환을 함께 명시한 이유는 같은 코드가 컴파일되는지와 이미 배포한 프로그램을 새 라이브러리로 실행할 수 있는지가 서로 다른 문제이기 때문이다.

1.0.0의 변경 기록을 보면 모델을 처음 실행하기 전에 준비 작업을 설정하던 함수와, 메모리 조각 정리에 쓰이던 설정이 빠졌다. 공개 헤더에 폐기 예정으로 표시된 함수 35개는 이와 별도로 삭제됐다. 모델이 다음에 생성할 토큰을 미리 제안하고 검증하는 추측 디코딩의 일부 함수는 확장용 헤더에서 기본 공개 헤더로 옮겼다. 그 기능을 확장 인터페이스에서 직접 불러오던 앱도 새 함수 위치를 확인해야 한다.

PC에서 모델을 실행하는 사람에게는 함께 배포된 기능 변화도 있다. 1.0.0 기록에는 키미 K3.1 프로 모델 구조 지원이 포함됐고, 내장 웹 채팅에는 대화를 이름 붙인 그룹으로 묶는 기능과 입력하는 동안 마크다운을 미리 보는 편집창이 들어갔다. 앱에서 해당 기능이 나타나는 시점은 앱 제작자가 반영한 실행 엔진의 버전에 달려 있다. 모델 실행에는 호환되는 가중치 파일이 필요하며, 메모리 요구량은 모델에 따라 달라진다.

코드가 흐릿하게 보이는 두 화면 영역 앞에서 작업하는 개발자의 손
AI 생성 개념 이미지: 두 코드 영역을 나란히 띄운 작업대로 앱의 라이브러리 연결을 점검하는 과정을 표현했다. · AI Ping

버전의 세 숫자와 개발 빌드

팀이 공개한 규칙에서는 뒤에 나온 라이브러리가 기존 호출 방식을 깨는 경우 첫 숫자를 올린다. 기존 앱의 호출을 유지하면서 새 모델을 지원하거나 공개 함수를 추가하면 가운데 숫자가 바뀐다. 공개 인터페이스를 그대로 두고 오류를 고치는 업데이트에는 마지막 숫자를 쓴다. 따라서 배포 패키지 담당자는 변경 기록을 열기 전에 어떤 수준의 호환을 전제로 한 버전인지 알 수 있다.

개발 과정에서 자주 배포하던 일련번호 빌드도 계속 제공된다. GitHub의 1.0.0 항목은 설치 파일을 운영체제별로 나열하는 대신 같은 커밋에서 만든 개발 빌드 b12359로 연결한다. 그 페이지에는 애플 실리콘과 인텔 맥, 윈도우, 리눅스 등에 맞춘 다운로드가 있다. 프로젝트가 안내하는 맥·윈도우 11용 라마 앱은 각각 메뉴 막대나 작업 표시줄에서 모델을 선택하는 별도 화면을 제공한다. 개발팀의 배포 문서에는 이 앱이 현재 개발 빌드를 사용한다고 적혀 있다.

첫 숫자는 호환되지 않는 변경, 가운데는 호환 기능, 끝은 호환 오류 수정
도표: llama.cpp가 공개한 버전 정책에서 첫째·둘째·셋째 숫자가 바뀌는 조건을 표시했다. · AI Ping

배포 도구가 시스템에 이미 설치된 ggml을 쓰는 경우에는 의존성의 버전도 맞아야 한다. 개발팀은 llama.cpp에 들어 있는 ggml 사본이 별도 공개한 ggml과 동일한 시점에 정식 태그를 붙인다. 홈브루와 데비안의 패키지는 이 규칙에 따라 시스템에 설치된 ggml을 함께 쓸 수 있다. 홈브루 담당자는 업데이트할 때 같은 라이브러리를 쓰는 다른 패키지도 이전과 같이 동작하는지 검사한다고 개발팀의 공개 논의에서 설명했다. 일련번호로 배포되는 개발 빌드는 그 시점까지 들어온 ggml 변경 사항을 자체 사본에 포함할 수 있어, 정식 태그와 배포 조건이 다르다.

개발팀의 배포 문서에 따르면 라마 데스크톱 앱은 시스템에 설치된 ggml을 찾아 연결하는 대신, 앱이 사용하는 실행 엔진과 그 엔진의 ggml 사본을 함께 제공한다. 1.0.0을 공개한 11월 13일에도 프로젝트는 정식 소스 태그와 운영체제별 개발 빌드를 별도 항목으로 유지했다.

출처