에이전트와 개발

llama.cpp 시험판, OpenCL 저비트 연산 커널 추가와 서버 외부 접속 실험

llama.cpp가 10월 20일 시험판 b11740~b11744를 냈다. OpenCL 백엔드에 q4_0, q4_k, q6_k 형식용 협력 K 방식 dp4a GEMM 커널을 넣었고, 서버에는 llama-connect 터널로 P2P 접속을 허용하는 실험 옵션 --connect를 추가했다.

루카스 ·

llama.cpp 프로젝트가 10월 20일 시험판 빌드 b11740부터 b11744까지를 잇따라 공개했다. 이 가운데 사용자에게 영향이 큰 변경은 두 가지다. OpenCL 백엔드에 저비트 양자화 모델용 행렬곱(GEMM) 커널이 추가됐고, 서버에는 같은 네트워크 밖에서도 접속할 수 있게 하는 실험 옵션 --connect가 들어갔다.1,2

가장 늦게 나온 b11744 릴리스에는 Windows arm64 OpenCL Adreno 빌드, Snapdragon용 Android·Linux 빌드(CPU, Adreno GPU, Hexagon NPU), CUDA·Vulkan·ROCm·SYCL·OpenVINO 빌드가 내려받기 파일로 올라 있다.2

b11741(#30741)은 OpenCL 백엔드에 협력 K 방식의 dp4a GEMM을 q4_0, q4_k, q6_k 세 양자화 형식별로 넣고 정렬 문제도 고쳤다. 앞서 b11740(#30756)은 정수(i32) 데이터의 GET_ROWS 연산과, i32·f32 사이의 복사 변환을 OpenCL에서 지원하도록 했다.1,3

b11744(#28277)의 server --connect는 로컬 서버에 LAN 밖에서 P2P로 접속하게 하는 옵션이다. 커밋 항목에는 이 기능이 실험 단계임을 분명히 하는 작업이 들어 있다. 서버 속성(props)에는 connect_code가 추가돼 Web UI에 원격 접속 코드를 보여 준다.

이 빌드에는 보완 수정도 들어 있다. --connect-code만 지정하면 /props에 코드만 노출될 뿐 실제로 연결해 주는 터널이 없었는데도 Web UI가 접속 코드를 띄웠다. 이제 --connect가 꺼져 있으면 코드를 비우고, 시작할 때 한 번 알려 준다. 서버는 llama-connect를 호출할 때 실제로 열린 포트를 쓰므로 --port 0과 GCP 재정의 설정에서도 작동한다. 접속 호스트는 --host에서 고르는데, 와일드카드 주소는 루프백으로 바꾸고 IPv6 주소는 대괄호로 감싼다. 바인딩된 소켓이 유닉스 소켓뿐이면 --connect를 거부한다. Windows 빌드 오류도 고쳤다.

종료 처리 주석도 바로잡았다. terminate()가 자식 프로세스의 표준 출력을 닫는다고 적혀 있었지만 실제로는 닫지 않는다. 로그 스레드는 그 파이프에 쓰는 프로세스가 모두 사라져야 fgets()를 벗어나므로, llama-connect의 하위 프로세스가 남아 있으면 join이 끝없이 멈출 수 있다. 같은 커밋에서 생성 문서의 --reasoning-preserve 기본값도 되돌렸다.2

b11742(#30825)는 토크나이저 수정이다. Carbon-14B의 HybridDNA 토크나이저를 지원하는데, 이 모델은 태그 없는 DNA 구간에 자동으로 태그를 붙이고 N으로 채운 꼬리 토큰(tail=pad_n)을 쓴다. DNA 태그 안의 공백은 제거하고, 여는 태그 없이 나온 닫는 DNA 태그는 Hugging Face 토크나이저처럼 처리한다. Carbon-500M, 3B, 8B는 Qwen의 추가 토큰을 등록하지 않고 tokenizer.json도 없어서, 변환할 때 토큰 유형과 병합 규칙, 특수 토큰 번호를 기본 토크나이저에서 가져오도록 했다.4

--connect를 쓰려는 사용자는 이 옵션이 실험 기능이라는 점과, 외부에서 서버에 닿는 경로가 열린다는 점을 함께 고려해야 한다. 릴리스 노트는 접속 코드의 인증·암호화 방식을 설명하지 않아 보안 수준은 판단하기 어렵다. 다만 --connect가 꺼져 있으면 서버가 접속 코드를 비운다.2

댓글

기사에 대한 의견이나 틀린 내용 제보를 남겨 주세요.

댓글을 불러오고 있습니다.