Thinking Machines의 Inkling 모델 공개
요약
Thinking Machines가 1T 파라미터 규모의 오픈 멀티모달 LLM인 Inkling을 공개했습니다. Inkling은 이미지, 텍스트, 오디오 입력을 네이티브하게 처리하며, 1M 컨텍스트 창과 에이전트적 기능을 갖춘 것이 특징입니다. MoE 구조와 상대적 어텐션 등 최신 기술을 적용하여 높은 성능과 효율성을 자랑합니다.
핵심 포인트
- 1T 파라미터 규모의 오픈 멀티모달 LLM 공개
- 이미지, 텍스트, 오디오를 네이티브하게 처리 가능
- 1M 컨텍스트 창 및 에이전트적 기능 지원
- MoE 구조와 상대적 어텐션 등 최신 아키텍처 적용
Inkling-Small 및 Inkling-Small-NVFP4 변형에 대한 성능 및 배포 구성입니다. 여기에 모든 Inkling 모델을 모아 놓았습니다. Inference Endpoints에서 원클릭으로 Inkling-Small을 배포하기 쉽게 만들었습니다 (최대 160 TPS). 또한 모델과 상호 작용할 수 있는 실시간 음성 및 이미지 데모도 제공합니다. Inkling이 더 작은 크기로 출시되었습니다 🤗 Thinking Machines Lab에서 Inkling-Small을 공개했습니다. 이 게시물을 업데이트하여
Inkling은 이미지, 텍스트, 오디오 입력을 네이티브하게 받아들이는 대규모 (1T 파라미터!) 오픈 모델입니다.
요약하자면(TLDR); Thinking Machines의 Inkling이 Hugging Face에 출시되었습니다. Inkling은 모든 모달리티(이미지, 오디오, 텍스트)를 이해하는 거대한 멀티모달 LLM이며, 에이전트적 기능(agentic capabilities)을 갖추고 있고 1M 컨텍스트를 지원합니다. 완전한 BF16 및 잘 보정된 NVFP4 변형으로 제공되며, 더 빠른 추론을 위한 투기적 MTP 레이어(speculative MTP layers)가 포함되어 있습니다. transformers, SGLang, vLLM, llama.cpp에서 day-0 지원이 이루어졌습니다. Thinking Machine Labs는 또한 Inkling과 동일한 아키텍처를 가진 276B 총 파라미터와 12B 활성 파라미터를 가진 Inkling-Small을 출시했으며, MXFP8 및 NVFP4 가중치에 대한 지원도 제공합니다.
Inkling은 약 ~1T 파라미터와 1M 컨텍스트 창을 가진 최초의 대규모 오픈 모델로, 이미지, 텍스트, 오디오 입력을 네이티브하게 받아들이며, 45조 개의 토큰(text, images, audio and video)으로 학습되었습니다. 이는 음성, 이미지, 텍스트와 같은 모달리티 전반에 걸친 추론에 중점을 두고 있으며, 파인튜닝을 통한 도메인 적응을 목표로 합니다. 저희는 이 모델을 가지고 몇 가지 데모를 만들고 아키텍처를 탐색했으며, 새로운 차원의 멀티모달 추론 앱을 구축하는 데 매우 유용하다고 생각합니다.
Inkling은 총 975B 및 활성 파라미터 41B를 가진 디코더 전용(decoder-only) 멀티모달 Mixture-of-Experts 모델입니다. 흥미로운 점이 많으니, 각 부분을 나누어 설명하겠습니다:
- 디코더 전용 (Decoder-only): 이는 아키텍처가 대부분의 최신 LLM에서와 같이 인과적 자기회귀 생성(causal autoregressive generation)을 지원한다는 것을 의미합니다.
- 멀티모달 (Multimodal): 이 모델은 텍스트, 오디오 및 이미지를 입력받을 수 있습니다.
- 전문가 혼합 (Mixture of Experts, MoE): 각 레이어 내부의 피드 포워드 네트워크(feed forward networks)는 희소(sparse)하여, 주어진 시점에 41B개의 파라미터만 활성화되기 때문에 더 빠른 추론(inference)을 달성합니다. 이 모델은 총 256개의 전문가를 가지고 있습니다.
아키텍처에 대한 간략한 개요는 다음과 같습니다.
상대적 어텐션 (Relative attention): 트랜스포머 모델에서 위치 정보를 주입하는 일반적인 방법인 RoPE 대신, Inkling은 상대적 어텐션을 사용하여 위치 정보를 인코딩합니다. 각 어텐션 레이어는 어텐션 로짓(attention logits) 내에서 위치를 직접 학습합니다. 키-쿼리-값(key-query-values) 외에도, 토큰당, 헤드당 상대 특징 R을 생성하는 네 번째 투영(projection)이 있습니다. 이 투영 텐서는 거리 정보(키 벡터와 쿼리 벡터 사이의 거리)로 조정된 후 어텐션 모듈로 전파됩니다.
하이브리드 어텐션 (Hybrid attention): 디코더 레이어는 글로벌 어텐션(전체 컨텍스트 길이에 한 번에 주의를 기울임)과 슬라이딩 윈도우 어텐션(슬라이딩 방식으로 고정된 컨텍스트 창에 주의를 기울임)을 번갈아 사용합니다. 이 아키텍처는 5:1의 슬라이딩 윈도우 대 글로벌 어텐션 레이어 패턴을 가지고 있습니다. 이러한 하이브리드 어텐션 방식은 계산 효율성을 제공합니다. 마지막 레이어는 글로벌 어텐션을 사용하여 특징이 풍부한 표현(feature-rich representations)을 구축하는 데 도움을 줍니다.
단기 컨볼루션 (Short convolution): 이 모델은 은닉 상태(hidden states)에 걸쳐 독특한 단일차원 컨볼루션, 즉 SConv를 사용합니다. SConv는 현재 토큰과 이전의 W-1개의 은닉 상태를 읽으며, 여기서 W는 슬라이딩 윈도우 크기입니다. 여기서 직관적인 점은 SConv가 로컬 어텐션을 지원하는 동시에 어텐션 및 MoE 모듈을 로컬 표현으로부터 해방시킨다는 것입니다.
공유 전문가 싱크를 갖춘 MoE (MoE with shared experts sink): Inkling에서는 라우터가 라우팅된 전문가와 공유 전문가 모두에 대한 점수를 매깁니다. 상위-k 선택은 6개의 전문가와 항상 활성화되는 2개의 공유 전문가에 걸쳐 수행됩니다.
시각 이해 (Vision understanding): 이 모델은 여러 개의 선형 레이어로 구성된 간단한 계층적 MLP 패치파이어(hierarchical MLP patchifier)를 포함합니다. 각 레이어는 픽셀을 점진적으로 병합하며, 마지막 레이어에서 패치당 하나의 임베딩을 생성합니다.
오디오 이해 (Audio understanding): 아키텍처는 이산화된 멜 스펙트로그램(discretized mel spectrogram)을 사용하며, 각 오디오 청크(100ms)는 멜 스케일로 변환된 후 정확한 멜 스펙트로그램 빈으로 분류됩니다.
멀티모달 타워(multimodal towers)는 다른 모델들이 각 모달리티별로 별도의 인코더를 사용하는 것과는 달리 비교적 간단한 모듈입니다. 각 이미지 패치는 이미지 임베딩 타워(image embedding tower)를 통과하고, 오디오 청크는 오디오 임베딩 타워(audio embedding tower)를 통과하여 두 가지 미디어 임베딩을 얻습니다. 이미지 입력에는 비디오 처리를 위한 추가적인 시간 차원도 포함됩니다. 우리는 이 기능이 다운스트림 파인튜닝에 유용할 것으로 예상하지만, 즉시 사용 가능한(out-of-the-box) 비디오 성능은 평가하지 않았습니다. 타워는 패치 그리드를 접어(folds the patch grid), 인접 토큰의 작은 국소 블록을 채널 차원으로 쌓아 hMLP를 통과시킵니다. 오디오 파형은 멜 스케일로 변환된 후, 이산적인 멜 빈으로 분류됩니다. 이 멜 빈 값들은 오디오 임베딩 타워에 임베드되고, 이 임베딩들이 합쳐져 최종 오디오 입력이 구성됩니다.
Inkling은 day-0 트랜스포머(transformers) 지원을 하며 SGLang 및 vLLM과 같은 주요 추론 엔진에서 지원됩니다.
이 모델은 매우 큽니다. bf16 체크포인트는 2TB의 VRAM이 필요하며, nvfp4 버전은 600GB의 VRAM이 필요합니다. Inference Providers와 같은 서버리스 추론 라우터를 통해 모델을 사용해 보거나, llama.cpp를 사용하여 로컬 배포 시 ggml 양자화(quants)를 사용할 수 있습니다.
transformers로 직접 추론하는 가장 쉬운 방법은 any-to-any 파이프라인을 사용하는 것입니다. 16비트 `
Blackwell Nvidia GPU에서 사용합니다. 최신 버전의 transformers를 사용하는지 확인하세요 (오늘 5.14.0이 출시되었습니다) (pip install -U transformers)
from transformers import pipeline
model_id = "thinkingmachines/Inkling"
# model_id = "thinkingmachines/Inkling-NVFP4"
...
파이프라인을 초기화한 후, 다음과 같이 프롬프트를 전달할 수 있습니다.
image_url = (
"https://huggingface.co/datasets/merve/vl-test-suite/"
"resolve/main/pills.jpg"
...
한 단계 더 깊이 들어가면, Auto 클래스를 사용할 수 있습니다. 추론(inference)의 경우, 모델에는 AutoModelForMultimodalLM 클래스를, 프로세서에는 AutoProcessor 클래스를 사용할 수 있습니다. 다양한 추론 작업(reasoning tasks)을 위해 토크나이저(tokenizer)는 reasoning_effort 인수를 받습니다. 추론 노력에 대한 기존 옵션은 "none", "minimal", "low", "medium", "high", "xhigh", 그리고 "max"입니다.
from transformers import AutoModelForMultimodalLM, AutoProcessor
model_id = "thinkingmachines/Inkling"
processor = AutoProcessor.from_pretrained(model_id)
...
멀티모달 추론의 경우, 동일한 클래스를 사용할 수 있습니다. 모델 카드에 각기 다른 모달리티별 예시 코드를 제공합니다.
이미지와 텍스트를 사용한 추론
from transformers import AutoModelForMultimodalLM, AutoProcessor
model_id = "thinkingmachines/Inkling"
processor = AutoProcessor.from_pretrained(model_id)
...
Inkling은 오디오 입력도 받습니다. 아래는 여전히 동일한 AutoModelForMultimodalLM 클래스를 사용하는 예시 추론 코드입니다.
오디오와 텍스트를 사용한 추론
from transformers import AutoModelForMultimodalLM, AutoProcessor
model_id = "thinkingmachines/Inkling"
processor = AutoProcessor.from_pretrained(model_id)
...
여러 노드의 클러스터에서 더 현실적인 병렬 배포를 원하시면, 아래의 Slurm 섹션을 참조해 주십시오.
SGLang은 출시 당시 Inkling을 위한 가장 빠른 배포 프레임워크 중 하나로, 커스텀 모델 구현을 포함하고 있습니다. 아래 실행 명령은 모델을 8개의 GPU에 분할(shard)하여 포트 30000에서 OpenAI와 호환되는 API를 제공합니다.
pip install sglang
python3 -m sglang.launch_server \
--model-path thinkingmachine/Inkling \
...
--tp-size는 GPU 개수에 맞게 조정하십시오. KV 캐시를 위해 더 많은 여유 공간을 확보해야 하는 경우 --mem-fraction-static (예: 0.85)을 추가하십시오.
vLLM은 프로덕션 서빙에 강력합니다. 단일 vllm serve 명령으로 Hub에서 가중치를 다운로드하고, 텐서 병렬 처리(tensor parallelism)를 사용하여 모델을 GPU에 분할하며, 포트 8000에서 OpenAI와 호환되는 서버를 시작합니다. 하드웨어에 맞게 사용자 정의하려면 여기에서 vLLM 레시피(Recipe)를 확인하십시오.
# nightly 또는 vllm>=0.26 (출시 시) 필요
uv pip install -U vllm --pre \
--extra-index-url https://wheels.vllm.ai/nightly/cu130 \
...
실제로는 여러 노드와 SLURM과 같은 분산 도구가 필요할 수 있습니다(아래 참조). 주요 매개변수는 노드의 GPU 개수에 대한 --tensor-parallel-size와 KV 캐시 메모리 제한에 걸리는 경우 컨텍스트 창을 제한하는 데 사용되는 --max-model-len입니다.
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{...}
Hugging Face를 통해 여러 추론 제공업체(inference providers)를 사용하여 이 모델로 추론할 수 있습니다. 여기에서 모든 코드 스니펫을 확인할 수 있습니다. 아래에서는 OpenAI 클라이언트를 사용하는 방법을 보여줍니다.
import os
from openai import OpenAI
client = OpenAI(...)
“:auto” 접미사는 설정에서 선호하는 제공업체로 라우팅되며, “cheapest” 또는 “:fastest”도 사용할 수 있습니다. 이번 출시에서는 모든 사용자에게 2시간 동안의 추론 비용을 지원합니다.
참고: Inference Providers의 오디오 지원은 작업 중이며 곧 추가될 예정입니다.
llama.cpp를 사용할 수 있습니다.
제한된 하드웨어에서 모델의 양자화(quantized) 버전을 실행하기 위해서입니다. Unsloth는 이 모델을 1비트 정밀도까지 양자화하여, 원래 모델 대비 VRAM 사용량을 95% 줄였습니다.
llama serve -hf unsloth/inkling-GGUF:UD-IQ1_S
이 명령어는 http://localhost:8080에서 실행되는 OpenAI 호환 서버를 시작합니다.
/v1
사용자가 선호하는 도구나 클라이언트에서 연결할 수 있습니다. 이곳에서 모델과의 채팅을 시작하고, 좋아하는 MCP(Multi-Capability Plugins)로 설정하며, 이미지나 파일을 편리하게 전달할 수 있습니다!
Llama cpp는 또한 도구, mcp, 에이전트 워크로드(agentic workloads)를 지원하는 내장 UI도 제공합니다. llama 앱에서 1비트 정밀도로 실행되는 Inkling을 확인해 보세요:
Inkling GGUF는 Unsloth Studio에서도 동적 1비트 GGUF로 실행할 수 있으며, 이 경우 86% 작아지면서도 top-1% 정확도의 약 74.2%를 유지합니다.
Pi는 다양한 언어 모델과 함께 사용할 수 있는 최소한의 코딩 에이전트 하네스(agent harness)입니다. Pi는 llama.cpp와 같은 추론 엔진 서버 엔드포인트 또는 Hugging Face의 Inference Provider와 함께 사용할 수 있으며, 이를 ~/.pi/agent/models.json에 추가해야 합니다.
설치 후에는 프로젝트 디렉토리에서 pi를 호출하여 Pi를 시작할 수 있습니다.
그러면 준비가 끝납니다! 이 데모에서는 모델에게 어려운 수학 추론 문제를 주고, pi의 도구를 사용해 해결하게 합니다.
Inkling은 광범위한 멀티모달 추론(multimodality reasoning)과 낮은 토큰 소비에 중점을 두었으므로, 문서 처리나 오디오 작업으로 테스트해 보세요.
MTP는 다음 토큰 하나뿐만 아니라 여러 개의 토큰을 한 번에 예측하는 추가 레이어를 모델에 추가합니다. 추론 과정에서 이 추가 레이어는 사변적 디코딩(speculative decoding)의
import torch
from transformers import AutoModelForMultimodalLM, AutoProcessor
processor = AutoProcessor.from_pretrained("thinkingmachines/Inkling")
...
전문가 수준의 자료와 대학 입시 시험에서 가져온 소규모 추론 질문 세트를 준비했습니다. 모델에 도전하기 위해 스크린샷에 워터마크가 있는 화면을 사진으로 찍었습니다. 이 모델은 '높음(high)' 레벨에서는 모든 문제를 해결했지만, '최고(highest)' 및 '중간(medium)' 추론 노력에서는 하나를 실패했으므로, 모델의 성능을 확인하고 각 문제 해결에 사용된 토큰 수를 제공할 수 있도록 모델 답변 링크를 제공합니다. 참고로, 저희는 이 vibe 평가에서 시스템 프롬프트를 제공하지 않았으며, 이러한 추론 질문들은 좋은 시스템 프롬프트와 함께 실행되는 것이 좋습니다. vibe 평가 이미지 및 결과는 여기에서 확인할 수 있습니다.
| 카테고리 | 질문 | 토큰 수 (추론 노력 중간) | 토큰 수 (추론 노력 높음) | 토큰 수 (추론 노력 최대) |
|---|---|---|---|---|
| 개방형 약물 상호작용 | 여기서 어떤 구성 요소들이 상호 작용하나요? | 1,893 ✅ | 2,367 ✅ | 3,688 ✅ |
| ... | ||||
| vibe에 대한 몇 가지 참고 사항: |
AI 자동 생성 콘텐츠
본 콘텐츠는 Hugging Face Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기