oMLX를 만든 준 킴이 허깅페이스에 합류한 이유
oMLX를 이끌어온 준 킴의 허깅페이스 합류 소식을 따라가며 MLX와 애플 실리콘 로컬 추론의 현재 위치와 남은 과제를 정리합니다.
원문 논문 보기
이번에 다룰 글은 허깅페이스가 블로그에 올린 Jun Kim, oMLX creator and maintainer, joins Hugging Face to support the MLX community입니다. 이 글은 oMLX를 만들고 유지해온 준 킴이 허깅페이스에 합류해 MLX 커뮤니티를 지원한다는 소식을 전합니다. 주장 자체는 한 문장으로 정리됩니다. 커뮤니티 주도로 자라난 MLX용 모델 포팅 작업을 허깅페이스 안에서 이어가며 MLX를 로컬 추론의 정식 대상으로 키우겠다는 것입니다. 원문은 제목 아래 링크로 연결해 두었습니다.
여기서 잠깐 배경을 짚고 넘어가면 좋겠습니다. MLX는 애플이 공개한 배열 프레임워크로, 애플 실리콘의 통합 메모리 구조에 맞춰 설계됐습니다. oMLX는 이 위에서 Llama나 Mistral, Qwen 같은 개방형 모델을 실제로 돌릴 수 있게 변환과 예제를 쌓아온 커뮤니티 프로젝트입니다. 그래서 이번 합류는 단순한 인사 이동이 아니라, 맥에서 모델을 돌리는 작업이 어디까지 왔는지를 보여주는 표시로 읽힙니다. 오늘 글에서는 이 표시가 무엇을 뜻하는지, 그리고 아직 무엇이 남았는지를 순서대로 따라가 보겠습니다.
안녕하세요, 패트릭입니다.
저는 이 소식을 처음 봤을 때 문장보다 사람이 먼저 눈에 들어왔습니다. 프레임워크 발표나 성능 숫자보다, 누가 그 사이를 메워왔는지가 궁금했기 때문입니다. 맥에서 거대 언어모델을 돌리는 일은 처음에는 취미에 가까웠습니다. 누군가 변환 스크립트를 올리면 다른 누군가가 양자화 설정을 고치고, 또 다른 누군가가 실행 예제를 다듬는 식이었죠. 그런데 어느 순간부터 이 취미가 꽤 진지한 개발 환경처럼 보이기 시작했습니다. 그렇다면 그 사이에는 무슨 일이 있었던 걸까요. 오늘은 그 질문을 붙잡고 이야기를 풀어가려 합니다.
맥북으로 모델을 돌린다는 말이 자연스러워진 사정
몇 년 전만 해도 노트북으로 거대 언어모델을 돌린다는 말은 농담처럼 들렸습니다. 서버용 GPU가 없으면 일단 대화를 시작하기 어려웠으니까요. 그런데 애플 실리콘 맥이 메모리를 크게 품기 시작하면서 분위기가 달라졌습니다. 36GB는 이제 시작점이 되었고, 96GB나 128GB를 고르는 사람도 드물지 않으며, 데스크톱급에서는 192GB까지 시야에 들어옵니다. 메모리가 커졌다는 사실 자체보다, 그 메모리를 CPU와 GPU가 함께 쓴다는 점이 판을 바꿨습니다. 따로 옮길 필요가 없으니 큰 모델을 통째로 올려놓고 추론하는 그림이 가능해진 것이죠.
저는 이 변화를 숫자로만 보지 않으려 합니다. 숫자는 금방 익숙해지지만, 개발자의 하루가 어떻게 달라졌는지를 보면 감이 옵니다. 예전에는 모델을 시험하려면 클라우드 인스턴스를 잡고, 환경을 맞추고, 비용을 계산해야 했습니다. 지금은 맥북을 열고, 변환된 가중치를 내려받고, 로컬에서 바로 돌려봅니다. 물론 모든 모델이 가볍게 돌아가는 것은 아닙니다. 그래도 질문을 던지고 답을 받는 사이클이 짧아졌다는 점은 분명합니다. 실험의 문턱이 낮아지면 시도 횟수가 늘고, 시도 횟수가 늘면 감각이 생깁니다. 맥에서 모델을 돌리는 사람들이 늘어난 이유는 성능표보다 이 감각에 가깝다고 봅니다.
그렇다면 왜 하필 MLX였을까요. 맥에는 llama.cpp 같은 이미 검증된 길도 있었으니까요. 이 질문에 답하려면 MLX가 처음부터 무엇을 겨냥했는지를 봐야 합니다. 다음 장면으로 넘어가 보겠습니다.

MLX가 애플 실리콘에 맞춰 설계됐다는 말의 뜻
MLX를 한 줄로 설명하면 애플 실리콘에 맞춘 배열 프레임워크라는 말이 자주 나옵니다. 그런데 이 설명은 맞는 말이면서도 너무 짧습니다. 배열 프레임워크라는 말만 들으면 넘파이와 뭐가 다르냐는 반응이 나올 수밖에 없기 때문입니다. 차이는 연산의 종류보다 메모리를 다루는 방식에서 생깁니다. 애플 실리콘은 CPU와 GPU가 별도의 메모리를 가진 구조가 아니라 하나의 통합 메모리를 함께 바라보는 구조입니다. MLX는 이 구조를 전제로 삼고, 데이터를 이리저리 복사하지 않고 그 자리에서 계산하는 길을 택했습니다.
생각해보면 사람도 비슷하게 일합니다. 책상 서랍마다 같은 서류를 복사해 넣어두면 편할 때가 있지만, 갱신할 때마다 모든 서랍을 뒤져야 합니다. 차라리 큰 책상 하나에 원본을 펼쳐놓고 모두가 그 자리에서 보면 헷갈릴 일이 줄어듭니다. 통합 메모리는 그 큰 책상과 비슷합니다. 가중치가 크면 클수록 복사 비용이 커지는데, 처음부터 복사를 줄이는 설계는 그래서 로컬 추론과 잘 맞습니다. 저는 이 선택이 우연이 아니라고 봅니다. 서버용 GPU처럼 크고 빠른 별도 메모리를 붙일 수 없는 맥에서는, 있는 메모리를 나누어 쓰는 편이 더 현실적이었기 때문입니다.
물론 설계가 좋다고 실행이 저절로 따라오지는 않습니다. 프레임워크가 있어도 모델이 없으면 빈 그릇에 가깝습니다. PyTorch용으로 공개된 가중치를 MLX에서 돌리려면 변환이 필요하고, 메모리와 속도를 맞추려면 양자화와 예제가 필요합니다. 이 빈틈을 메운 쪽이 커뮤니티였고, 그 한가운데 oMLX가 있었습니다. 그렇다면 oMLX는 구체적으로 무엇을 했을까요.
oMLX가 메워온 자리는 변환과 예제 사이였습니다
oMLX를 처음 접한 분들은 모델 저장소 정도로 오해할 수 있습니다. 이름에 MLX가 들어가고 모델 이름들이 줄지어 있으니 그렇게 보이기 쉽습니다. 하지만 oMLX의 역할은 저장보다 손질에 가까웠습니다. Llama나 Mistral, Qwen 같은 개방형 모델이 새로 나올 때마다 MLX에서 돌아가는 형태로 옮기고, 실행 예제를 붙이고, 문제가 생기면 고치는 일을 반복했습니다. 말로 하면 한 줄이지만, 해본 사람은 이 반복이 얼마나 손이 많이 가는지 압니다. 형식이 조금만 바뀌어도 변환 코드가 깨지고, 토크나이저 처리가 어긋나고, 샘플링 설정에 따라 답이 달라지기 때문입니다.
제가 이 대목에서 주목하는 부분은 속도가 아니라 꾸준함입니다. 새로운 모델이 나올 때마다 누군가 빠르게 옮겨주니, 맥 사용자 입장에서는 기다림이 짧아졌습니다. 기다림이 짧아지니 시도가 늘었고, 시도가 늘어나니 오류 보고가 쌓였으며, 그 보고가 다시 다음 변환을 낫게 만들었습니다. 이런 순환은 회사가 계획해서 만들기 어렵습니다. 밤과 주말에 시간을 내어 문제를 고치는 사람들이 있어야 굴러가기 때문입니다. oMLX는 바로 그 순환의 한가운데 있었습니다. 그래서 이번 합류 소식을 두고 단순한 채용 기사로 읽기 어렵습니다. 커뮤니티의 손길이 닿던 자리에 이제 조직의 손길이 더해지는 장면이기 때문입니다.
그런데 여기서 재미있는 질문이 생깁니다. 변환이라는 일은 왜 한 번 해두면 끝나는 일이 아니라 계속 손을 타야 할까요. 다음에서는 그 이유를 들여다보겠습니다.
변환은 왜 한 번으로 끝나지 않을까요
모델 변환을 파일 형식만 바꾸는 일로 생각하면 곧잘 가볍게 보게 됩니다. 확장자를 바꾸듯 가중치를 옮기면 끝이라고 여기는 것이죠. 실제로는 그렇지 않습니다. 어텐션이나 정규화, 회전 위치 임베딩 같은 세부 구현이 모델마다 조금씩 다르고, 토크나이저나 채팅 템플릿도 버전마다 바뀝니다. 변환 코드는 이런 차이를 하나하나 받아내야 합니다. 어디선가 어긋나면 모델은 돌아가긴 하는데 말이 어색해지거나, 아예 길이가 짧아지거나, 특정 언어에서만 품질이 떨어지는 식으로 문제가 드러납니다. 그래서 변환은 옮기는 일이면서 동시에 검증하는 일입니다.
양자화 이야기도 같은 선상에 있습니다. 메모리를 아끼려고 가중치 정밀도를 낮추면 크기는 줄지만 표현의 결이 조금씩 바뀝니다. 어떤 양자화 방식을 쓰고, 어떤 층을 살리고, 어떤 평가로 품질을 확인할지가 매번 쟁점이 됩니다. 저는 이 숫자보다 그 뒤의 판단이 더 중요하다고 봅니다. 같은 4비트라도 어떤 도구를 썼는지, 어떤 데이터로 왜곡을 재었는지에 따라 체감이 달라지기 때문입니다. oMLX가 쌓은 것은 그래서 단순한 파일 묶음이 아니라, 이런 판단을 반복한 기록에 가깝습니다. 어떤 모델은 이 설정에서 잘 돌고, 어떤 모델은 저 설정에서 깨진다는 경험이 쌓이면 다음 사람은 헤매지 않아도 됩니다.
문제는 그다음입니다. 이렇게 쌓인 경험이 한두 사람의 어깨에만 머물면 오래가기 어렵습니다. 사람이 쉬거나 방향을 틀면 흐름이 끊기기 때문입니다. 그렇다면 이 흐름을 조직 안으로 옮기면 무엇이 달라질까요. 허깅페이스의 선택을 볼 차례입니다.

허깅페이스가 사람을 데려왔다는 선택이 말해주는 것
회사가 기술을 지원할 때는 보통 두 가지 길이 있습니다. 코드를 직접 밀어붙이거나, 문서를 다듬거나, 인프라를 붙이는 식의 기술적 지원이 하나입니다. 다른 하나는 그 기술을 매일 만지는 사람을 데려오는 것입니다. 이번 경우는 뒤쪽에 가깝습니다. oMLX를 만들고 유지해온 준 킴이 허깅페이스에 합류해 MLX 커뮤니티를 지원한다는 발표에는, 기술보다 사람의 손이 먼저 보입니다. 저는 이 순서를 눈여겨봤습니다. 프레임워크의 다음 버전을 약속하는 대신, 커뮤니티와 모델 사이를 오가던 사람을 품었기 때문입니다.
저희가 새로운 AI 아키텍처를 볼 때도 숫자만 보지는 않습니다. 실제로 무엇이 바뀌었고, 그 변화가 시스템에서 어떤 비용 구조를 만드는지를 함께 봅니다. 같은 태도로 이번 합류를 보면, 바뀌는 것은 생각보다 구체적입니다. 변환 스크립트가 허브와 더 잘 맞물릴 수 있고, 모델 카드에 MLX용 사용법이 더 자연스럽게 붙을 수 있으며, 문제가 생겼을 때 고치는 경로가 짧아질 수 있습니다. 거창한 선언 없이도 개발자의 하루는 조금씩 편해집니다. 이런 종류의 편함은 발표회에서는 잘 보이지 않지만, 막상 써보면 계속 손이 갑니다.
반면 기대를 너무 앞서 가져가는 것은 경계하고 싶습니다. 사람이 합류했다고 해서 모든 모델이 다음 날부터 매끈하게 돌아가는 것은 아니기 때문입니다. 유지보수는 여전히 손이 많이 들고, 새 모델이 나올 때마다 같은 숙제가 반복됩니다. 그럼에도 방향은 분명합니다. 허깅페이스가 MLX를 PyTorch나 llama.cpp 같은 기존 길 옆에 나란히 놓겠다는 뜻으로 읽히기 때문입니다. 그렇다면 그 나란함은 개발자에게 무엇을 뜻할까요.
로컬 추론의 길이 늘어나면 개발자의 선택은 어떻게 바뀔까요
로컬에서 모델을 돌리는 길은 이미 여러 갈래가 있습니다. llama.cpp는 다양한 하드웨어에서 넓게 쓰이고, MLC LLM은 컴파일 기반의 최적화로 자기 자리를 만들었으며, MLX는 애플 실리콘에 깊게 맞춘 길로 자랐습니다. 선택지가 늘면 흔히 경쟁 구도로만 보게 되는데, 저는 현장의 질문이 조금 다르다고 봅니다. 무엇을 쓸지가 아니라 어디에 무엇을 쓸지가 먼저이기 때문입니다. 서버에서는 처리량과 동시성이 중요하고, 노트북에서는 반응 속도와 배터리와 메모리가 중요하며, 데모 환경에서는 설치의 쉬움이 중요합니다. 같은 모델이라도 놓이는 자리에 따라 맞는 도구가 달라집니다.
이런 관점에서 보면 MLX가 정식 대상으로 자리 잡는다는 말은 특정 도구가 이겼다는 뜻이 아닙니다. 맥이라는 자리에서는 MLX를 먼저 떠올릴 수 있게 된다는 뜻에 가깝습니다. 허깅페이스 허브에서 모델을 찾고, MLX용 가중치와 예제를 바로 이어받는 흐름이 매끈해지면, 맥 사용자는 굳이 다른 길을 우회하지 않아도 됩니다. 저는 여기서 멈칫했습니다. 편함이 곧 종속은 아닐까 하는 생각이 들었기 때문입니다. 한 생태계에 익숙해지면 다른 길의 감각이 무뎌질 수 있으니까요. 하지만 로컬 추론의 세계는 아직 하나로 굳기에는 변수가 많습니다. 하드웨어도 바뀌고, 양자화도 바뀌며, 모델 구조도 바뀝니다. 그래서 지금은 특정 길에 줄을 서기보다, 각 길이 어떤 자리에서 강한지를 알아두는 편이 낫다고 봅니다.
이 대목에서 비교 질문이 자연스럽게 따라옵니다. MLX와 llama.cpp, MLC LLM은 실제로 어떻게 다를까요. 숫자를 바로 꺼내기 전에, 숫자를 읽기 전에 봐야 할 조건부터 정리하겠습니다.

벤치마크 숫자를 꺼내기 전에 조건부터 봐야 하는 이유
벤치마크 이야기가 나오면 흔히 토큰 속도가 먼저 오갑니다. 초당 몇 토큰이 나왔는지, 어떤 모델을 썼는지, 메모리는 얼마나 먹었는지가 화제가 됩니다. 그런데 이 숫자는 조건을 떼고 보면 금방 사람을 헷갈리게 합니다. 같은 맥이라도 칩과 메모리와 전원 상태에 따라 결과가 달라지고, 같은 모델이라도 양자화 방식과 프롬프트 길이에 따라 속도가 바뀝니다. 배치 크기가 1인 대화와 문서를 한꺼번에 넣는 경우는 아예 다른 운동에 가깝습니다. 그래서 저는 벤치마크표를 볼 때 숫자보다 앞줄을 먼저 봅니다. 무엇을 재었는지, 무엇을 맞추고 비교했는지를 확인하는 것이죠.
실제 시스템 관점에서 보면 다음 질문이 바로 생깁니다. 이 속도가 내 작업에서도 나올까요. 개발자가 궁금한 것은 보통 최고 속도가 아니라 내 프롬프트 길이와 내 모델 크기에서의 체감입니다. 맥북에어에서 짧은 대화를 나누는 경우와 맥 스튜디오에서 긴 문서를 요약하는 경우는 요구가 다릅니다. MLX가 통합 메모리를 잘 쓴다고 해도, 메모리가 부족하면 결국 작은 모델이나 더 센 양자화를 골라야 합니다. 반대로 메모리가 넉넉하면 큰 모델을 통째로 올려두고 여유롭게 돌릴 수 있습니다. 같은 MLX라도 앉은 자리에 따라 얼굴이 달라지는 셈입니다.
그래서 앞으로 필요한 것은 어느 도구가 빠르다는 한 줄 verdict가 아니라, 자리별 조건표에 가깝습니다. 어떤 칩과 메모리에서, 어떤 모델 크기와 양자화로, 어떤 입력 길이를 재었는지를 나란히 놓고 보는 것이죠. 준 킴의 합류가 이런 비교를 더 투명하게 만들 수 있을지, 저는 그 대목을 조용히 기대하고 있습니다. 커뮤니티가 각자 재던 숫자를 허브라는 한자리에서 모으면, 읽는 사람 입장에서는 훨씬 수월해지기 때문입니다. 다음으로는 그 자리의 바탕이 되는 메모리 이야기를 해보겠습니다.
36GB부터 192GB까지, 메모리 숫자가 바꾸는 일상
애플 실리콘 맥의 메모리 선택지는 이제 꽤 넓어졌습니다. 노트북에서 36GB를 고르는 일은 낯설지 않고, 48GB나 64GB도 자주 보이며, 데스크톱에서는 96GB를 넘어 192GB까지 시야에 들어옵니다. 숫자를 나열하면 그저 사양표 같지만, 하루의 모습으로 바꾸면 감이 옵니다. 금요일 오후에 카페에서 36GB 맥북으로 작은 모델을 돌리며 초안을 다듬는 사람, 연구실에서 96GB 기계로 중간 크기 모델을 올려두고 실험을 돌리는 사람, 작업실 구석의 192GB 기계로 큰 모델을 통째로 받아두고 밤새 평가를 돌리는 사람이 같은 시간에 존재합니다. 같은 MLX라도 메모리 크기에 따라 할 수 있는 일이 달라지는 것이죠.
여기서는 조금 조심해서 읽을 필요가 있습니다. 메모리가 크다고 모든 문제가 풀리는 것은 아니기 때문입니다. 큰 모델을 올리면 속도가 느려질 수 있고, 양자화를 세게 하면 품질이 흔들릴 수 있으며, 긴 입력을 넣으면 첫 토큰까지의 기다림이 길어질 수 있습니다. 그래서 메모리 숫자는 한계선이면서 동시에 선택지입니다. 어디까지 올릴 수 있는지를 알려주면서, 그 안에서 무엇을 포기할지를 묻게 만듭니다. 저는 이 대목이 로컬 추론의 묘미라고 봅니다. 서버처럼 돈을 더 내고 자원을 빌리는 대신, 내 기계의 한계 안에서 모델과 설정의 조합을 고르는 일이 생기기 때문입니다.
이런 선택의 과정에서는 예제와 문서가 생각보다 큰 힘을 발휘합니다. 어떤 모델이 어떤 메모리에서 어느 정도 속도로 도는지, 어떤 양자화가 무난한지를 적은 한 줄이 몇 시간의 헤맴을 줄여줍니다. oMLX가 쌓아온 예제들이 바로 그런 한 줄들의 묶음이었습니다. 이 묶음이 허브와 더 가까워지면, 맥 사용자 입장에서는 고르는 일이 훨씬 수월해집니다. 그렇다면 남은 숙제는 무엇일까요. 오래가는 유지보수 이야기로 넘어가 보겠습니다.

오래가는 유지보수는 누가 어떻게 감당할까요
커뮤니티 프로젝트의 미덕은 빠름입니다. 새 모델이 나오면 밤사이 변환이 올라오고, 주말이면 예제가 붙습니다. 하지만 빠름에는 대가가 따릅니다. 고친 사람의 시간이 고갈되면 흐름이 느려지고, 형식이 바뀌면 여기저기서 같은 오류가 터지며, 오래된 포트는 누구도 손대지 않은 채 남습니다. 저도 비슷한 규모의 작업을 곁에서 본 적이 있는데, 처음에는 즐거움이 동력이지만 어느 순간부터는 책임감이 무게가 됩니다. 사람들이 고마워할수록 쉬기 어려워지는 묘한 상태가 찾아오는 것이죠.
허깅페이스라는 조직이 들어오면 이 무게를 나누는 그림이 가능해집니다. 변환 도구를 허브의 흐름에 맞추고, 테스트를 붙이고, 모델 카드와 예제를 한자리에서 관리하면, 한 사람의 어깨에 실렸던 짐이 여러 갈래로 흩어집니다. 물론 조직이 들어온다고 저절로 풀리는 것은 아닙니다. 우선순위는 여전히 정해야 하고, 어떤 모델을 먼저 옮길지, 어떤 양자화를 기본으로 둘지, 깨진 포트를 언제 내릴지를 정하는 일은 남습니다. 저는 그래서 이번 합류를 완성으로 보지 않습니다. 지속을 위한 뼈대를 세우는 시작으로 봅니다. 뼈대가 서면 커뮤니티의 빠름은 살리면서, 뒤에서 받쳐주는 힘은 키울 수 있기 때문입니다.
여기서 한 가지 더 생각해볼 지점이 있습니다. 유지보수만큼이나 묵직한 숙제인 학습 지원은 어디까지 갈까요. 추론만큼은 아니어도 맥에서 작은 학습이나 미세조정을 돌리고 싶다는 바람은 꾸준히 있어왔기 때문입니다.
맥에서 학습까지 바라면 욕심일까요
MLX 이야기가 나올 때 추론만큼 자주 오가는 말이 학습입니다. 맥에서도 모델을 가르칠 수 있느냐는 질문이죠. 솔직히 말하면 이 질문에는 기대와 현실이 섞여 있습니다. 작은 규모의 미세조정이나 실험적인 학습은 맥에서도 충분히 의미가 있습니다. 데이터를 외부로 내보내지 않고 손볼 수 있고, 아이디어를 빠르게 시험해볼 수 있기 때문입니다. 밤사이 작은 실험을 돌려보고 아침에 결과를 보는 그림은 꽤 매력적입니다. 저도 이런 쓰임새라면 맥에서의 학습이 충분히 설득된다고 봅니다.
반면 큰 규모의 사전학습을 맥에 기대는 것은 다른 이야기입니다. 서버용 가속기와 견주면 연산의 절대량이 다르고, 여러 대를 묶는 통신과 저장 장치의 설계도 다릅니다. 그래서 학습 지원을 말할 때는 무엇을 위한 학습인지를 먼저 가르는 편이 낫습니다. 일상적인 미세조정과 실험을 돕는 일인지, 아니면 대규모 학습의 일부를 맡겠다는 뜻인지에 따라 답이 달라지기 때문입니다. 이번 발표가 추론 쪽 지원에 방점을 찍고 있는 만큼, 학습에 대해서는 서두르기보다 차근차근 범위를 넓히는 쪽이 자연스러워 보입니다.
그렇다면 앞으로의 관전 포인트는 어디에 두는 편이 좋을까요. 저는 숫자가 아니라 흐름을 보려 합니다. 어떤 모델이 얼마나 빨리 올라오는지, 양자화 품질 논란이 어떻게 정리되는지, 예제가 얼마나 오래 살아남는지를 말이죠. 이런 흐름이 좋아지면 맥에서의 학습 이야기도 그때 다시 꺼내도 늦지 않습니다. 다음 장에서는 그 흐름을 읽는 방법을 조금 더 구체적으로 정리하겠습니다.

앞으로 무엇을 보면 흐름이 보일까요
새 소식이 나오면 흔히 의미부터 묻습니다. 판도가 바뀌느냐, 표준이 되느냐 같은 큰 질문이 먼저 나오는 것이죠. 저는 이번 건에서는 조금 다르게 접근하려 합니다. 큰 말보다 작은 신호를 몇 개 골라두는 편이 뒤를 내다보는 데 도움이 되기 때문입니다. 제가 앞으로 보고 싶은 것은 세 가지입니다. 새 개방형 모델이 나왔을 때 MLX용이 얼마나 빨리 따라오는지, 그 과정에서 품질 논란이 어떻게 다뤄지는지, 그리고 한 달 뒤에도 그 포트가 잘 살아 있는지를 보는 것입니다. 이 세 가지는 발표문보다 정직합니다. 손이 가고 있는지, 고치는 경로가 살아 있는지를 그대로 보여주기 때문입니다.
이런 관점에서 보면 벤치마크 논쟁도 다르게 보입니다. MLX와 llama.cpp, MLC LLM 가운데 어느 하나가 이겼다는 선언보다, 각 도구가 어떤 자리에서 편한지가 쌓이는 편이 낫습니다. 맥북에서의 대화 속도, 긴 문서에서의 첫 토큰 기다림, 메모리 한계에서의 선택지 같은 구체적인 장면이 모이면, 개발자는 자기 자리에 맞는 답을 고를 수 있습니다. 저는 그래서 특정 도구의 승리를 점치기보다, 비교의 조건이 얼마나 투명해지는지를 보려 합니다. 조건이 투명해지면 숫자는 저절로 말을 걸어오기 때문입니다.
물론 아직 모르는 것도 많습니다. 새 모델 구조가 나올 때마다 변환 코드는 다시 손을 봐야 하고, 양자화의 fidelity 논쟁은 매번 조금씩 다른 얼굴로 돌아오며, 허브와 커뮤니티 사이의 역할 나누기도 손봐야 할 대목이 생길 수 있습니다. 다만 방향 자체는 생각보다 또렷합니다. 맥이라는 자리에서 모델을 돌리는 일이 취미의 영역을 넘어 일상의 도구로 넘어오고 있다는 것이죠. 마지막으로는 이 흐름을 조금 더 멀리서 바라보겠습니다.
한 사람의 합류가 남기는 질문
이야기를 정리할 시간이 왔습니다. 준 킴이 oMLX를 이끌어오며 쌓은 변환과 예제의 기록이 허깅페이스라는 더 큰 흐름에 합쳐진다는 사실, 그리고 그 합침이 MLX를 로컬 추론의 정식 대상으로 키우는 쪽으로 향한다는 점은 분명해 보입니다. Llama와 Mistral, Qwen 같은 개방형 모델을 맥에서 돌리는 일이 더 수월해지고, 허브에서 이어지는 경로가 더 짧아질 가능성이 큽니다. 여기까지는 발표가 전하는 그대로입니다.
제가 덧붙이고 싶은 것은 질문 하나입니다. 앞으로 맥에서 모델을 돌리는 일이 더 쉬워진다면, 우리는 그 쉬움으로 무엇을 할까요. 서버에 올리기 전에 로컬에서 먼저 따져보는 습관이 생길까요. 아니면 더 큰 모델을 로컬에 욱여넣는 데만 힘을 쓸까요. 쉬움은 쓰는 사람의 태도에 따라 전혀 다른 결과를 낳습니다. 저는 이번 합류가 바로 그 태도를 묻는 장면이라고 봅니다. 도구가 편해질수록 무엇을 시험하고 무엇을 남길지를 고르는 눈이 중요해지기 때문입니다.
그래서 저는 이 소식을 채용 기사로 닫지 않으려 합니다. 한 사람의 자리를 옮기는 일이 아니라, 커뮤니티의 손길이 조직의 뼈대와 맞닿는 일로 기억하려 합니다. 맥에서 모델을 돌리는 다음 장은 결국 손의 문제입니다. 고치는 손이 계속 이어지는지, 그 손을 돕는 구조가 함께 자라는지를 보면 됩니다. 그 흐름이 이어진다면, 다음에 새 모델이 나왔을 때 맥 사용자의 기다림은 조금 더 짧아질 것입니다. 저는 그 짧아진 기다림을 조용히 기대하면서 오늘 글을 마칩니다.

참고 자료
- Jun Kim, oMLX creator and maintainer, joins Hugging Face to support the MLX community · huggingface.co
리뷰 원문