허깅페이스가 인공지능 모델 라이브러리의 새 버전에 문서 글자 인식, 음성 합성, 텍스트 생성 모델 지원을 추가했다. 문서 처리나 음성 서비스를 만드는 개발자는 입력 준비부터 결과 생성까지 라이브러리가 제공하는 방식으로 연결할 수 있다. 릴리스 노트
1. 문서 이미지 인식에 MiniCPM-OCR 추가
OpenBMB의 MiniCPM-OCR는 스캔 문서, 화면 갈무리, 영수증, 표처럼 글자가 많은 이미지를 읽는다. 이미지에서 뽑은 시각 정보를 언어 모델에 전달하는 구조로, 글자 인식과 페이지의 마크다운 변환을 요청할 수 있다. 모델 문서
기본 대화 양식은 모델이 페이지를 해석하는 사고 과정을 먼저 출력하도록 구성돼 있다. 인식 결과만 받으려면 입력을 준비할 때 사고 과정 출력을 끌 수 있다. 사용 예시
시각 정보를 줄이는 방식은 4배와 16배 두 가지다. 4배가 기본이며 문서·화면 글자 인식에 필요한 시각 토큰을 더 남긴다. 16배는 자연 이미지에서 더 공격적으로 축소해 토큰 수를 줄이고 추론을 빠르게 하는 선택지다. 문서 예시의 같은 페이지에서는 4배일 때 1260개, 16배일 때 315개 토큰을 사용했다. 4배를 기준으로 시각 토큰이 75% 줄어든 것으로, 실제 처리시간이나 메모리가 75% 줄었다는 측정값은 아니다. 설정은 프로세서와 생성 호출 양쪽에 전달한다. 축소 모드와 코드 원문
inputs = processor.apply_chat_template(
messages, add_generation_prompt=True, tokenize=True,
return_dict=True, return_tensors="pt",
processor_kwargs={"downsample_mode": "4x"},
).to(model.device, dtype=model.dtype)
output = model.generate(**inputs, max_new_tokens=512, downsample_mode="4x")
print((inputs["input_ids"] == model.config.image_token_id).sum().item())
# 1260 visual tokens; the same page in `"16x"` mode is 315 instead표: 같은 문서 페이지의 축소 모드별 시각 토큰 수
조건: MiniCPM-OCR-1.0, 같은 문서 페이지 1장, 축소 모드를 프로세서와 생성 호출에 함께 지정한 문서 예시
단위: 시각 토큰 개수
| 축소 모드 | 시각 토큰 수 |
|---|---|
| 4배(기본·기준값) | 1260 |
| 16배 | 315 |
차트: 같은 페이지의 시각 토큰 수(0개 기준, 4배 모드 1260개가 비교 기준)
4배 ████████████████████ 1260
16배 █████ 315작은 이미지의 확대 여부도 고른다. 아래는 같은 영수증을 처리한 문서 예시로, 기본 방식은 학습 때의 크기까지 확대하고 원본 유지 방식은 이미지를 작은 칸으로 나눈 패치 격자에만 맞춘다. 작은 이미지 처리 예시
표: 작은 영수증 이미지의 확대 방식별 처리 격자
조건: MiniCPM-OCR-1.0 프로세서, 원문 영수증 이미지를 224×224로 조정한 입력, 문서 예시 출력
단위: 패치 수
| 확대 방식 | 격자 한 변 |
|---|---|
| 항상 확대(기본) | 32 |
| 원본 유지 | 16 |
| 글자 밀도에 따라 결정 | 32 |
적응형 방식도 이 영수증에서는 글자가 조밀하다고 판단해 확대했다. 작은 화면 갈무리를 다룰 때는 원본 해상도를 유지하는 선택지도 함께 살필 만하다. 작은 이미지 처리 예시
2. 음성 합성은 녹음과 저장된 목소리로 시작
Kyutai의 Pocket TTS는 파라미터 1억 개의 음성 합성 모델이다. 허깅페이스 발표 기준 CPU에서 음성 재생 시간보다 짧은 시간에 결과를 만든다. 모델 개요
모델은 소리를 압축해 표현한 잠재값을 초당 12.5회 생성하고, 프로세서는 이를 24kHz 음성 파형으로 복원한다. 음성 변환 구조
목소리는 녹음을 복제하거나, 미리 계산한 잠재값 또는 음성 프롬프트를 처리해 둔 캐시로 지정한다. 기본 제공 목소리도 캐시에 담겨 있어 매번 다시 인코딩할 필요가 없다. 같은 목소리로 여러 문장을 읽게 하는 서비스라면 이 재사용 경로를 활용할 수 있다. 목소리 지정 방식
긴 문장은 프로세서로 나눠 처리할 수 있다. 생성 길이의 기본 예산은 텍스트 길이에 따라 정해지고, 모델이 발화 종료를 판단하면 생성을 멈춘다. 사용 팁
3. Flint는 입력마다 일부 전문가를 선택
Recursive의 Flint는 입력마다 일부 전문가 모듈을 골라 계산하는 혼합 전문가 언어 모델이다. 전문가를 선택하는 층마다 256개 중 6개와 공유 전문가를 사용한다. 모델 구조
대부분의 층에서는 현재 토큰과 앞선 512개 토큰을 살피고, 나머지 층에서는 입력 전체를 보는 방식을 섞는다. 주의 범위
릴리스에 실린 회사 발표는 Flint 가중치를 서로 다른 수치 형식인 BF16과 NVFP4로 저장한 체크포인트를 비교한다. 체크포인트는 모델 가중치를 저장한 실행용 파일이다. 코드 수정 능력을 평가하는 SWE-bench Pro v2 점수는 BF16이 89.7%, NVFP4가 88.5%로, BF16 기준 1.2%포인트 차이다. 이는 평가 점수 차이이지 처리시간 개선이나 메모리 절감의 실측치가 아니다. 회사는 비슷한 하드웨어에서 실행하는 모델들을 비교 대상으로 삼았으며, 이 평가 항목은 내부 측정이라고 표시했다. 벤치마크 원문
같은 평가에서 Qwen 3.8은 94.9%, Qwen 3.6은 73.8%다. Flint의 두 형식 모두 이 비교에서는 Qwen 3.8보다 낮고 Qwen 3.6보다 높다. 비교 그림
표: SWE-bench Pro v2의 모델·가중치 형식별 점수
조건: 회사 발표 그림, 유사 하드웨어에서 실행하는 모델 비교, 해당 평가에 내부 측정(†) 표시
단위: 점수(%, 높을수록 좋음)
| 모델·형식 | 점수 |
|---|---|
| Flint BF16(형식 비교 기준값) | 89.7 |
| Flint NVFP4 | 88.5 |
| Qwen 3.8 | 94.9 |
| Qwen 3.6 | 73.8 |
차트: SWE-bench Pro v2 점수(0% 기준, 0~100% 범위의 근사 막대)
Flint BF16 ██████████████████ 89.7%
Flint NVFP4 ██████████████████ 88.5%
Qwen 3.8 ███████████████████ 94.9%
Qwen 3.6 ███████████████ 73.8%기본 실행은 주의 분포의 기준을 잡는 학습 보정값인 어텐션 싱크를 반영하며, 점수를 32비트 부동소수점으로 계산한다. 주의 계산 구현인 SDPA는 싱크를 처리하지 못하므로, 문서는 긴 입력에 싱크를 지원하는 별도 어텐션 커널을 사용하도록 안내한다. 실행 참고사항
4. 장치 분할 변경과 사용자가 살필 점
모델 계산을 여러 장치에 나누는 텐서 병렬에서는 입력을 벡터로 바꾸는 임베딩도 기본으로 분할한다. 이를 위한 전용 방식이 생겼고, 폭이 병렬 크기로 나누어떨어지지 않아도 지원한다. 기존 열·행 기반 방식을 임베딩에 적용한 사용자 정의 계획은 새 방식으로 옮겨야 한다. 병렬 계획 변경
혼합 전문가 모델의 병렬 계획도 전문가를 장치별로 나누도록 바뀌었다. 각 장치가 전문가 전체를 중복 보관하지 않아 메모리 낭비를 줄이는 대신, 사용자 정의 계획에도 전문가 분할을 반영해야 한다. 병렬 처리의 기본 경로는 정돈되지만 이를 직접 구성했던 팀에는 설정 이관 작업이 생기는 셈이다. 전문가 분할 변경
업그레이드 환경을 준비할 때는 파이썬 최소 지원 버전이 3.11로 오른 점도 확인할 사항이다. 지원 버전 변경
5.21.0은 OCR·음성 합성·혼합 전문가 모델을 표준 Transformers 경로로 확장하는 동시에, 기존 병렬 설정의 점검을 요구하는 릴리스다.
