카카오

34 개의 포스트

tech.kakao.com

태그로 필터

kakao5분 읽기큐레이션 요약

한국 문화 이해부터 화면 조작까지: Kanana-V 기능 확장의 모든 것

Kanana-V는 단일 이미지 질의응답을 넘어 한국 문화 이해, 문서·다중 이미지 분석, GUI 인식과 조작까지 수행하는 실용적 VLM을 목표로 개발됐다. 특히 대규모 한국어 Interleaved 데이터를 정교하게 정제하고 언어·문화적 특성에 맞게 학습시킨 결과, 데이터 양을 줄이더라도 한국어 및 VQA 성능을 높일 수 있었다. 글은 이러한 성능 향상의 배경이 된 데이터 처리 원칙과 실험 경험을 설명한다. ## VLM 기능 확장 방향 - 실제 서비스의 VLM에는 다음과 같은 능력이 요구된다. - 수십 페이지 PDF의 구조와 내용을 이해하는 문서 분석 - 여러 이미지를 비교·분석하는 다중 이미지 이해 - GUI 화면을 인식하고 클릭·입력 등 행동을 수행하는 Computer Use Agent(CUA) - 한국 문화와 언어적 맥락을 이해하는 지역 특화 능력 - Kanana-V는 문서 이해, GUI Grounding, 다중 이미지, 한국어 벤치마크에서 비슷한 규모의 Qwen3-VL 4B와 비교 가능한 성능을 보였으며, 특히 한국어 특화 태스크에서 경쟁력을 확인했다. ## Interleaved 한국어 데이터셋 - Interleaved 데이터셋은 이미지와 텍스트가 번갈아 배치된 형태다. - 블로그처럼 이미지와 설명이 함께 있는 자료를 활용하면 다음 효과를 기대할 수 있다. - 이미지와 텍스트의 연관 관계 학습 - 다양한 지식과 한국적 맥락 습득 - 예시를 바탕으로 문제를 해결하는 in-context learning 강화 - 원본 데이터는 수백 테라바이트 규모였으며 광고성 콘텐츠, 깨진 이미지, 중복 게시물 등 저품질 자료가 많이 포함돼 있었다. - 이를 처리하기 위해 Datatrove를 도입해 데이터를 샤딩하고 여러 필터를 병렬 적용했다. ## 8단계 데이터 정제 파이프라인 ### 1. 이미지 기반 문서 필터 - 깨진 이미지, 저해상도 이미지, 광고성 이미지 등을 제거했다. - OBELICS 기준을 참고해 다음 자료를 제외했다. - 종횡비가 3.0 이상인 이미지 - 한 변이 28픽셀 미만인 극소 이미지 - 유효한 이미지가 하나도 남지 않은 문서 - 이미지가 모두 제거된 문서는 Interleaved 데이터의 의미가 약해지므로 함께 제외했다. ### 2. 한국어 언어 식별 - FastText 기반 언어 식별 모델을 사용했다. - 한국어일 확률이 90% 이상인 문서만 통과시켰다. - 기계 번역이나 다국어 혼합 저품질 문서는 제거하면서도, 한국어 기술 문서에 포함된 영어 인용이나 코드 스니펫은 보존할 수 있도록 기준을 정했다. ### 3. 반복 패턴 제거 - Gopher의 반복 필터를 한국어에 맞게 조정했다. - 동일한 문장·단락의 반복 여부를 검사했다. - 2-gram부터 10-gram까지 분석해 비정상적으로 반복되는 구문을 탐지했다. - 스팸, 자동 생성 광고, 템플릿형 게시물을 제거하는 데 활용했다. ### 4. 기본 품질 필터 - 평균 단어 길이, 비알파벳 문자 비율, 불용어 출현 빈도 등을 검사했다. - 영어 기준을 그대로 적용하면 한국어 문서가 과도하게 제거되므로 평균 단어 길이 기준을 최소 1자로 완화했다. - ‘은, 는, 이, 가’와 같은 한국어 조사·어미 중심의 불용어 목록을 별도로 구성했다. - 자연스러운 문장은 조사와 어미가 일정 비율 포함되지만, 키워드 나열형 스팸에는 거의 없다는 점을 이용했다. ### 5. 문장 구조 검증 - C4 데이터셋의 품질 기준을 참고했다. - 최소 4문장 이상인 문서를 요구해 한 줄짜리 메모나 지나치게 짧은 콘텐츠를 제거했다. - 한국어는 문장 끝에 마침표를 생략하는 경우가 많아 종결 부호 기준은 적용하지 않았다. ### 6. 종합 품질 평가 - FineWeb의 라인 단위 품질 필터를 적용했다. - 다음과 같은 문서 구조를 검사했다. - 짧은 줄의 비율 - 글머리 기호로 시작하는 줄의 비율 - 줄임표로 끝나는 줄의 비율 - 상품 목록이나 메뉴판처럼 설명성이 낮은 콘텐츠를 걸러냈다. ### 7. MinHash 기반 중복 제거 - 펌글, 복사·붙여넣기, 일부 템플릿만 변경한 게시물을 제거했다. - 모든 문서 쌍을 비교하면 O(n²) 비용이 발생하므로 MinHash와 Locality-Sensitive Hashing(LSH)을 사용했다. - 문서를 고정 길이 시그니처로 압축하고 유사 문서를 같은 버킷에 배치한 뒤, 같은 버킷 안에서만 비교해 처리 비용을 줄였다. ### 8. 개인정보 처리와 콘텐츠 정리 - 전화번호와 이메일 주소 등 개인정보를 한국어 특화 PII 탐지 로직으로 찾아 마스킹 토큰으로 대체했다. - 이미지 제거 후 남은 빈 텍스트 노드를 삭제했다. - 분리된 텍스트 블록을 병합해 데이터 구조를 정리했다. ## 데이터 품질과 모델 성능의 관계 - 전체 데이터의 약 77%를 제거하고 약 23%만 최종 학습에 사용했다. - 정제 전후 동일한 모델과 학습 설정으로 Ablation 실험을 수행했다. - 정제 후 모델은 다음 영역에서 전반적으로 성능이 향상됐다. - MMVet: 33.76 → 36.79 - LLaVA-Wild: 75.10 → 78.00 - 국내 개체 인식: 50.05 → 53.66 - 한국어 음식 메뉴판 이해: 44.56 → 47.02 - 한국어 화장품 라벨 이해: 67.02 → 68.09 - 한국어 차트 이해는 58.33에서 57.43으로 소폭 하락해, 정제가 모든 태스크에 일관되게 긍정적인 것은 아님을 보여줬다. ## 데이터 파이프라인 구축에서 얻은 교훈 - 계산 비용이 낮은 필터를 앞에 배치해 명백한 저품질 데이터를 먼저 제거해야 한다. - 각 단계에서 탈락한 문서와 중간 결과를 저장하면 필터 오류를 검증하고 임계값을 쉽게 조정할 수 있다. - 중복 제거 완료 데이터도 별도로 보관하면 PII 처리 방식이나 출력 형식을 변경할 때 전체 파이프라인을 재실행하지 않아도 된다. - 영어용 품질 기준을 한국어에 그대로 적용하면 정상적인 한국어 문서까지 제거될 수 있으므로 언어별 튜닝이 필요하다. - Interleaved 데이터에서는 이미지가 삭제될 때 앞뒤 텍스트 구조도 함께 정리해야 한다. 이미지와 텍스트의 연결 관계가 깨지면 학습 데이터의 의미가 손상될 수 있다. 대규모 멀티모달 학습에서는 데이터 양보다 품질과 언어·문화적 적합성이 더 중요하다. 한국어 VLM을 구축할 때는 범용 필터를 그대로 사용하기보다 한국어 문장 구조와 콘텐츠 특성에 맞춘 기준을 마련하고, 단계별 결과를 저장하며 성능 검증을 병행하는 것이 효과적이다.

원문 읽기(새 탭에서 열림)
kakao5분 읽기큐레이션 요약

2026 카카오그룹 신입크루 공채 코딩테스트 1차 문제해설

2026 카카오그룹 신입크루 1차 코딩테스트는 문자열 처리, 시뮬레이션, 트리 최적화, 그래프 탐색 등 다양한 난도의 7문제로 구성되었으며, 글에서는 그중 일부 문제의 해결 전략을 설명합니다. 핵심은 문제별 제약을 활용해 중복 제거, 주기 탐색, 구조적 정렬, 상태 완전탐색, BFS 시뮬레이션으로 풀이 범위를 줄이는 것입니다. 특히 3번 문제는 최적해의 트리 구조를 증명해 탐색 공간을 크게 축소합니다. ## 문제 1: 스포 방지 구간의 중요한 단어 판별 - 문자열을 공백 기준으로 나누고 각 단어의 시작·끝 인덱스를 구합니다. - 단어 구간과 스포 방지 구간 `[s, e]`가 한 글자라도 겹치면 스포 방지 단어로 분류합니다. - 비스포 구간에 등장한 단어는 `Set`이나 `HashMap`에 저장해 중복 여부를 관리합니다. - 스포 방지 단어 중 다음 조건을 모두 만족하는 단어만 중요한 단어로 셉니다. - 스포 방지 구간과 겹친다. - 비스포 구간에는 등장하지 않았다. - 같은 시점에 왼쪽에서 먼저 공개된 중요한 단어와 중복되지 않는다. - 여러 단어가 동시에 공개될 때는 왼쪽 단어부터 처리하므로, 처리한 중요한 단어도 별도로 저장해야 합니다. ## 문제 2: 모든 신호등이 노란불이 되는 시점 찾기 - 각 신호등은 `G + R + Y` 길이의 주기를 무한히 반복합니다. - 모든 신호등이 동시에 노란불인 첫 시점을 찾기 위해 시뮬레이션합니다. - 정답이 존재하지 않을 수도 있으므로 종료 시점을 정해야 합니다. - 모든 주기 길이의 최소공배수까지 확인하면 이후 상태가 반복됩니다. - 각 `G + R + Y`가 최대 20이므로 충분히 큰 상한까지 직접 시뮬레이션하는 방법도 가능합니다. - 구현 방법은 여러 가지입니다. - 매초 각 신호등의 현재 상태를 갱신합니다. - 시간 배열을 만들고 각 시점의 노란불 개수를 셉니다. - 각 신호등의 노란불 구간을 수식으로 계산해 특정 시점에 노란불인지 판정합니다. - 모든 신호등의 노란불 개수가 신호등 수와 같아지는 첫 시점을 답으로 선택합니다. ## 문제 3: 트리의 리프 노드 수 최대화 - 분배수는 2 또는 3이며, 같은 깊이의 분배 노드는 모두 같은 분배수를 사용합니다. - 분배수 `k`인 노드 하나는 예산을 1 사용하고 리프 수를 `k - 1`만큼 증가시킵니다. - 루트에서 리프까지의 분배도는 경로상의 분배수 곱이며, 항상 `2^p × 3^q` 형태입니다. - 각 경로의 곱이 `split_limit`을 넘지 않아야 합니다. ### 부분 분배의 정렬 - 같은 분배수를 사용하는 연속된 층에서 부분 분배가 여러 번 발생한다면, 얕은 층부터 최대한 완전 분배하도록 순서를 바꿀 수 있습니다. - 순서를 바꿔도 다음 값은 변하지 않습니다. - 전체 예산 사용량 - 전체 리프 수 증가량 - 각 경로에서 분배수 곱의 총량 - 따라서 하나의 분배수 블록에서는 부분 분배가 최대 한 깊이에서만 발생하도록 정렬할 수 있습니다. ### 2분배층을 3분배층보다 위에 배치 - 프런티어 크기가 `W`일 때: - `2 → 3` 순서의 예산은 `W + 2W = 3W` - `3 → 2` 순서의 예산은 `W + 3W = 4W` - 두 순서 모두 최종 프런티어 크기는 `6W`지만, `2 → 3`이 더 적은 예산을 사용합니다. - 따라서 최적해는 일반적으로 다음 형태로 정렬할 수 있습니다. ```text 2분배층 여러 개 → 3분배층 여러 개 ``` ### 풀이 절차 - 가능한 모든 `(i, j)`에 대해 `2^i × 3^j ≤ split_limit`인지 확인합니다. - 각 조합마다 `2`를 사용하는 층을 먼저, `3`을 사용하는 층을 나중에 배치합니다. - 각 층에서 프런티어 전체를 분배할 수 있으면 예산을 사용해 다음 층으로 이동합니다. - 예산이 부족해지면 남은 예산만큼 부분 분배하고 해당 경우를 종료합니다. - 모든 조합 중 최종 리프 수가 가장 큰 값을 답으로 선택합니다. ## 문제 4: 바이러스 파이프 감염 최대화 - 트리의 간선은 A, B, C 세 종류의 파이프로 구성됩니다. - 한 번에는 한 종류의 파이프만 열 수 있으며, 현재 감염된 배양체에서 해당 종류의 파이프만 따라가며 연결된 모든 배양체가 감염됩니다. - 이미 감염된 배양체는 계속 감염 상태로 유지됩니다. - 같은 종류의 파이프를 연속해서 여는 것은 상태 변화가 없으므로 고려할 필요가 없습니다. - 파이프를 열 때마다 현재 감염 집합을 시작점으로 DFS 또는 BFS를 수행합니다. - 가능한 파이프 열림 순서를 모두 시뮬레이션합니다. - 최대 길이가 10이므로 순서의 수는 `3^10 = 59,049`로 충분히 작습니다. - 각 순서에서 최종 감염 배양체 수를 계산하고 최댓값을 구합니다. ## 문제 5: 카카오 앱 밀기 시뮬레이션 - 격자 안의 정사각형 앱을 한 칸 밀면, 앞을 막는 앱들도 같은 방향으로 연쇄 이동합니다. - 앱이 격자 밖으로 나가면 반대편으로 넘어오며, 이 과정에서 추가 충돌이 발생할 수 있습니다. - 앱 블록이 2×2, 3×3처럼 크기 때문에 연쇄 이동이 여러 행과 열로 퍼질 수 있습니다. ### BFS 기반 연쇄 처리 - 명령을 처리할 때 처음 선택한 앱을 시드로 둡니다. - BFS로 해당 앱이 이동할 때 함께 밀려야 하는 앱을 탐색합니다. - 탐색이 끝나면 관련 앱을 동시에 한 칸 이동시킵니다. - 격자 밖으로 잘린 앱이 생기면 이를 다음 라운드의 새로운 시드로 사용합니다. - 새로운 시드가 더 이상 없을 때까지 다음 과정을 반복합니다. 1. 시드 설정 2. BFS로 충돌 앱 탐색 3. 앱 동시 이동 4. 잘린 앱을 다음 시드로 등록 - 격자 크기와 블록 수의 제한이 작아 직접 상태를 시뮬레이션할 수 있으며, 유한한 상태 공간 때문에 연쇄 과정의 종료도 보장됩니다. 문제별로 자료구조와 알고리즘을 복잡하게 적용하기보다, 문자열 중복 관리에는 집합, 반복 주기에는 최소공배수, 트리에는 교환 논증과 완전탐색, 감염·충돌에는 BFS를 적용하는 것이 핵심입니다. 특히 최적화 문제에서는 가능한 구조를 먼저 증명해 탐색 범위를 줄이는 접근이 효과적입니다.

원문 읽기(새 탭에서 열림)
kakao5분 읽기큐레이션 요약

2026 카카오그룹 신입크루 공채 코딩테스트 2차 문제해설

2026 카카오그룹 신입크루 2차 코딩테스트는 총 5문제로, 완전탐색부터 동적 계획법, 슬라이딩 윈도우, 수학적 관찰, 백트래킹까지 다양한 문제 해결 능력을 요구했다. 각 문제는 단순한 구현보다 상태를 효율적으로 표현하고, 불필요한 탐색을 줄이는 설계가 핵심이었다. 특히 입력 크기가 큰 문제에서는 배열을 직접 생성하지 않고 누적합이나 구간별 규칙을 활용해야 했다. ## 문제 1: 힌트 스테이지 — 구매 조합 완전탐색 - 각 스테이지에서 힌트 번들을 구매할지 여부를 비트마스크로 표현한다. - `mask`를 `0`부터 `2^n - 1`까지 순회하며 모든 구매 조합을 확인한다. - 특정 구매 조합이 정해지면: - 현재 스테이지에서 사용할 수 있는 힌트권을 최대한 사용한다. - 그때의 스테이지 해결 비용과 구매 비용을 합산한다. - 번들 구매 후 이후 스테이지에서 사용할 수 있는 힌트권 수를 갱신한다. - 모든 조합 중 총비용이 가장 작은 값을 답으로 선택한다. - 힌트권 수가 `n` 이상 증가할 수 있으므로 배열 인덱스 오버플로를 방지해야 한다. - 핵심 시간복잡도는 구매 여부를 전부 확인하는 완전탐색에 기반한다. ## 문제 2: 보물 찾기 — 구간 DP - 보물이 `L`열부터 `R`열 사이에 있을 때, 반드시 찾기 위한 최소 비용을 `cost[L][R]`로 정의한다. - 구간 안의 `i`열을 굴착하면 다음 세 경우를 고려해야 한다. - 보물이 `i`열에 있으면 추가 비용은 없다. - 보물이 왼쪽에 있으면 `cost[L][i-1]`가 추가된다. - 보물이 오른쪽에 있으면 `cost[i+1][R]`가 추가된다. - 따라서 `i`열을 선택했을 때 필요한 비용은 다음 세 값의 최댓값이다. - `depth[i]` - `depth[i] + cost[L][i-1]` - `depth[i] + cost[i+1][R]` - 이 최댓값을 최소화하는 `i`를 선택해 `cost[L][R]`와 `pick[L][R]`를 갱신한다. - `pick` 배열에는 각 구간에서 처음 굴착해야 할 열을 저장한다. - 이후 전체 구간 `[1, w]`에서 시작해 굴착 결과에 따라 왼쪽 또는 오른쪽 구간으로 범위를 좁힌다. - 열의 개수가 최대 200이므로 모든 구간과 후보 열을 확인하는 `O(w^3)` DP가 가능하다. - 단순히 항상 가운데 열을 고르는 전략은 각 열의 굴착 비용을 반영하지 못해 최적해를 보장하지 않는다. ## 문제 3: 선인장 숨기기 — 2차원 슬라이딩 윈도우 - 각 칸에 해당 칸이 몇 번째 빗방울에 젖는지를 기록한다. - 비를 한 번도 맞지 않는 칸은 `INF`로 설정한다. - `w × h` 부분격자 `W`가 처음 비를 맞는 시각은 내부 값의 최솟값이다. - `f(W) = W 내부 원소들의 최솟값` - 따라서 `f(W)`가 가장 큰 부분격자를 찾으면 된다. - 2차원 최솟값을 직접 반복 계산하지 않고, 단조 deque를 이용해 두 번의 1차원 슬라이딩 윈도우로 처리한다. - 각 행에서 너비 `w`의 최솟값을 계산한다. - 그 결과에 대해 각 열마다 높이 `h`의 최솟값을 계산한다. - 단조 deque에서는: - 새 값을 넣을 때 뒤에서 더 큰 값들을 제거한다. - 윈도우를 벗어난 인덱스는 앞에서 제거한다. - 각 원소가 deque에 최대 한 번 들어가고 한 번 나오므로 전체 시간복잡도는 `O(mn)`이다. - 최솟값이 같으면 더 위쪽, 다시 같으면 더 왼쪽에 있는 부분격자를 선택한다. - 추가 메모리도 `O(mn)`이며, `m × n ≤ 5 × 10^5` 조건을 처리할 수 있다. ## 문제 4: 제곱 개수 배열 — 누적합과 구간 점프 - `brr`는 `arr[i]` 값을 `arr[i]`번 연속해서 추가해 만든 배열이다. - `brr`의 길이가 최대 `10^15` 수준이 될 수 있어 실제 배열을 생성하면 안 된다. - `arr`의 누적합을 이용해 `brr`의 특정 인덱스가 어떤 동일 값 구간에 속하는지 찾는다. - `arr[i]^2`의 누적합도 만들어 여러 숫자 구간에 걸친 합을 빠르게 계산한다. ### 구간 합 K 계산 - `[l, r]` 구간은 최대 세 부분으로 나눈다. - `l`이 속한 구간의 남은 부분 - 완전히 포함되는 가운데 숫자 구간들 - `r`이 속한 구간의 앞부분 - 양 끝이 같은 숫자 구간에 속하면 값과 길이를 곱해 한 번에 계산할 수 있다. - 누적합을 이용해 각 부분을 `O(1)`에 계산한다. ### 합이 K인 윈도우 개수 C 계산 - `brr` 위에서 고정된 길이의 윈도우를 한 칸씩 이동시키면 일반적으로 배열 길이에 비례하는 시간이 걸린다. - 하지만 윈도우의 왼쪽 끝과 오른쪽 끝이 각각 같은 숫자 구간에 머무는 동안에는, 윈도우 합의 변화량이 일정하다. - 이 구간에서 윈도우 합은 등차수열이 되므로 합이 `K`인 시작점의 개수를 수식으로 한 번에 계산할 수 있다. - 숫자가 바뀌는 경계까지 점프한 뒤 같은 과정을 반복한다. - 숫자 구간의 경계를 기준으로 이동하므로 전체 시간복잡도는 `O(N)`이다. ## 문제 5: 기차 선로 — 백트래킹과 시뮬레이션 - 격자 크기가 최대 20칸으로 작아 가능한 선로 배치 수를 백트래킹으로 탐색할 수 있다. - 기차는 `(1, 1)`에서 출발해 현재 선로의 방향에 따라 한 칸씩 이동한다. - 빈칸을 만날 때마다 놓을 수 있는 모든 선로 종류를 시도한다. - 새 선로의 형태는 다음 두 정보에 의해 결정된다. - 직전에 어느 방향에서 들어왔는지 - 다음에 어느 방향으로 나갈지 - 따라서 현재 위치뿐 아니라 이전 이동 방향도 탐색 상태에 포함해야 한다. - 다음과 같은 경우에는 즉시 탐색을 중단한다. - 장애물로 이동하는 경우 - 현재 방향과 맞지 않는 선로를 만난 경우 - 격자 밖으로 나가는 경우 - 도착점 `(n, m)`에 도달하면 전체 조건을 검증한다. - 격자에 놓인 모든 선로를 기차가 지나갔는지 확인한다. - 3번 선로를 가로와 세로 방향으로 각각 한 번씩, 총 두 번 통과했는지 확인한다. - 모든 조건을 만족하는 경로만 정답 개수에 포함한다. - 경우의 수가 많지 않지만 상태와 선로 연결 조건을 정확히 구현하는 것이 가장 중요하다. 각 문제는 문제의 구조에 맞는 알고리즘 선택이 성능을 좌우한다. 작은 상태 공간에서는 완전탐색과 백트래킹을 사용하고, 구간 선택 문제는 DP로 상태를 저장하며, 대규모 배열 문제는 누적합·단조 deque·구간 점프처럼 반복 계산을 제거하는 기법을 적용하는 것이 효과적이다.

원문 읽기(새 탭에서 열림)
kakao2분 읽기큐레이션 요약

Kanana-o 신규 모델 및 API 베타 서비스를 공개합니다.

카카오는 한국어와 한국적 맥락을 깊이 이해하고 텍스트·이미지·오디오를 통합 처리하는 옴니 모델 **Kanana-o**를 공개하고, 정식 상용화에 앞서 API 클로즈드 베타를 진행한다. 베타 모델은 **Kanana-1.5-o-9.8b-2602**이며, 자연스러운 한국어 발화와 감정 표현, 다중 화자·멀티턴 대화 등 다양한 활용을 목표로 한다. 카카오는 실제 서비스 아이디어를 가진 개발자와 연구자들의 사용 및 피드백을 통해 기술 가능성을 검증할 계획이다. ## 한국어와 멀티모달에 특화된 Kanana-o - 텍스트, 이미지, 오디오 등 두 가지 이상의 입력을 동시에 이해하고 처리하는 통합 멀티모달 언어 모델이다. - 한국어의 표현과 문화적 맥락, 복잡한 사용자 의도를 깊이 있게 해석하도록 설계됐다. - 억양·속도·감정 등 화자의 특성을 반영해 자연스러운 한국어 음성을 생성한다. - 텍스트 생성 속도와 오디오 처리 속도의 균형을 고려해 대화형 애플리케이션에 적합하다. - 팟캐스트 분석, 멀티턴 대화, 다중 화자 대화 TTS 등 다양한 시나리오에 활용할 수 있다. ## API 베타 서비스 운영 방식 - 제공 모델은 **Kanana-1.5-o-9.8b-2602** 버전이다. - 대규모 트래픽을 처리하는 공개 서비스가 아니라, 개발자와 파트너가 직접 사용하며 피드백을 제공하는 클로즈드 베타 테스트다. - 운영 기간은 **2026년 2월 27일부터 5월 27일까지**다. - 베타 기간에는 정해진 일일 사용 횟수만큼 API를 테스트할 수 있다. ## 신청 절차와 선정 기준 - `omni.kanana.ai`에서 카카오 계정으로 로그인한다. - 소속, 사용 목적, 예상 시나리오 등을 포함한 비즈니스 폼을 작성해 대기 등록한다. - 선정된 참가자는 2월 27일부터 순차적으로 카카오톡 알림톡을 통해 초대장과 API 이용 가이드를 받는다. - 대상은 개발자, 학생, 스타트업, 연구자 등 구체적인 활용 계획을 가진 사용자다. - 단순히 “AI를 사용해보고 싶다”는 동기보다, 시각장애인용 쇼핑 도우미처럼 모델의 기능과 구현 방법이 명확한 제안이 유리하다. ## 기대되는 활용 분야 - 이미지 이해 기능을 활용한 시각장애인 지원 서비스 - 음성과 이미지를 결합한 대화형 비서 - 감정과 화자 특성을 반영한 콘텐츠 제작 및 TTS - 팟캐스트·회의 등 다중 화자 오디오 분석 - 한국어 중심의 교육, 고객 지원, 엔터테인먼트 애플리케이션 실제 베타 신청을 고려한다면 단순 체험보다 구체적인 사용자 문제, 입력 데이터 형태, API 활용 방식, 프로토타입 구현 계획을 명확히 작성하는 것이 좋다.

원문 읽기(새 탭에서 열림)
kakao4분 읽기큐레이션 요약

잃어버린 리포트를 찾아서: 카카오 메시징 시스템의 경쟁 조건 문제와 안티 패턴 제거 과정

KIMS의 메시지 상태가 `SENT`에 멈춘 원인은 벤더사의 전송 결과 리포트가 메시지 레코드의 DB 커밋보다 먼저 도착하는 경쟁 조건이었다. 특히 응답이 빠른 특정 벤더와, 과금 후처리로 트랜잭션이 길어진 유료 메시지에서 문제가 집중되었으며, 전체 메시지의 약 0.02%에서 발생했다. 트랜잭션 범위를 줄이고 각 보장의 필요성을 재검토하는 과정에서, 불필요한 장기 트랜잭션과 외부 이벤트 발행을 분리해야 한다는 결론에 도달했다. ### KIMS 메시지 처리 구조 - KIMS는 카카오 내부 서비스용 SMS 전송 플랫폼으로, 하루 약 100만 건을 처리한다. - 다수의 IDC와 MSA 컴포넌트, 여러 외부 SMS 벤더로 구성되어 있다. - 기본 흐름은 다음과 같다. - API Server가 품질 지표를 기준으로 벤더를 선택한다. - 벤더 호출 후 메시지를 `SENT` 상태로 DB에 기록한다. - 벤더가 전송 결과 리포트를 전달한다. - Report Server가 메시지를 `REPORTED` 상태로 갱신한다. - 각 단계가 비동기적으로 분리되어 있어, 처리 순서가 뒤집힐 가능성이 존재했다. ### `SENT` 상태에 멈춘 메시지 - 일부 메시지가 리포트를 수신했음에도 `REPORTED`로 갱신되지 않았다. - Report Server 로그에는 벤더 리포트 수신 기록이 남아 있었다. - 즉, 리포트가 네트워크에서 유실된 것이 아니라 DB 반영 전에 폐기된 상황이었다. - 문제가 전체 메시지가 아닌 약 0.02%에서만 발생해 재현과 원인 분석이 어려웠다. ### 빠른 벤더와 긴 트랜잭션이 만든 경쟁 조건 - 리포트 누락은 특정 벤더로 전송된 메시지에서 집중적으로 발생했다. - 해당 벤더는 API 호출 후 평균 약 20ms, 문제 사례에서는 약 8ms 만에 리포트를 보냈다. - 반면 API Server는 벤더 호출 이후 후처리와 DB 영속화를 진행하고 있었다. - 유료 메시지는 과금 이벤트 발행 로직까지 하나의 `@Transactional` 범위에 포함되어 트랜잭션이 더 오래 유지됐다. - 결과적으로 처리 순서가 다음처럼 역전될 수 있었다. - API Server가 벤더 호출 - 과금 후처리와 이벤트 발행 수행 - 벤더가 리포트 전송 - Report Server가 상태 갱신 시도 - 아직 메시지 레코드가 DB에 없어 리포트가 유효하지 않은 것으로 판단되어 Drop - API Server가 뒤늦게 메시지를 DB에 저장 - 메시지의 초기 상태를 기록하는 Write 경로와 리포트를 읽어 상태를 갱신하는 Read 경로가 같은 시점에 교차하면서 Race Condition이 발생했다. ### 트랜잭션 범위 줄이기 - 기존 트랜잭션에는 DB 상태 변경뿐 아니라 Kafka 이벤트 발행 등 비즈니스 로직도 포함되어 있었다. - 이로 인해 Long-lived Transaction이 발생하고 DB Commit 시점이 지연됐다. - 과금 이벤트 발행을 `@Async`, `@TransactionalEventListener` 기반으로 분리해 커밋 이후 별도 스레드에서 실행하도록 변경했다. - 트랜잭션 책임을 상태 변경과 DB 영속화까지로 제한했다. - 평균 커밋 시점이 약 10ms 앞당겨졌고, 리포트 누락도 눈에 띄게 감소했다. - 외부 이벤트 발행 실패 때문에 DB 트랜잭션 전체가 롤백되는 Dual-write 문제도 완화됐다. - 외부 시스템으로 보내는 이벤트는 DB 트랜잭션과 본질적으로 동시에 롤백할 수 없으므로, 트랜잭션 내부에 무리하게 포함하는 방식은 부적절했다. ### 트랜잭션 보장의 필요성 재검토 글은 단순히 트랜잭션을 짧게 만드는 데서 그치지 않고, 해당 업무에 트랜잭션 자체가 필요한지 질문한다. MySQL의 `REPEATABLE READ`에서 제공되는 보장을 세 가지로 나누어 검토했다. - **원자성** - 여러 쓰기 작업 중 일부만 성공하는 상황을 막고 전체를 롤백하는 기능이다. - 해당 로직의 DB 쓰기는 사실상 단일 작업이었다. - 여러 테이블이나 레코드에 걸친 원자성이 필요하지 않다면 트랜잭션의 Abortability는 필수적이지 않을 수 있다. - **읽기 격리** - 라우팅 벤더 정보와 실시간 품질 지표를 조회하고 있었다. - 품질 지표는 분 단위로 갱신되며, 1분 전 데이터가 사용되어도 문제가 없었다. - 서로 독립적인 메타데이터를 조회하므로 동일한 스냅샷에서 읽어야 할 필요도 크지 않았다. - **쓰기 격리** - 변경 내용을 커밋 전까지 다른 트랜잭션에 노출하지 않는 보장이다. - JPA/Hibernate의 Dirty Checking에서는 변경 사항이 먼저 Persistence Context의 1차 캐시에 반영되고, 실제 DB Write는 트랜잭션 종료 시점까지 지연될 수 있다. - 이 지연이 리포트 처리보다 DB 저장이 늦어지는 직접적인 원인이 되었다. ### 실용적인 설계 교훈 - 외부 시스템의 응답 시간이 매우 짧을 수 있다는 전제에서 비동기 흐름을 설계해야 한다. - “호출 후 DB 저장”처럼 순서를 가정한 구조는 벤더별 응답 편차 때문에 경쟁 조건을 만들 수 있다. - 트랜잭션에는 반드시 원자적으로 처리해야 하는 DB 작업만 포함하고, 이벤트 발행·외부 API 호출·긴 후처리는 분리하는 것이 좋다. - 트랜잭션의 원자성·읽기 격리·쓰기 격리가 실제 비즈니스 요구사항인지 각각 검토해야 한다. - 리포트 처리에서는 아직 원본 메시지가 저장되지 않은 경우를 단순 Drop하지 말고, 재시도·지연 큐·Transactional Outbox 같은 보완책을 함께 고려해야 한다.

원문 읽기(새 탭에서 열림)
kakao2분 읽기큐레이션 요약

카카오 AI 앰배서더 ‘KANANA 429 앰배서더’를 신규 모집합니다.

카카오는 AI 앰배서더 프로그램 ‘KANANA 429’를 올해 100명 규모로 확대 모집한다. AI 전문가·크리에이터·대학생으로 분야를 세분화하고, 활동 기간을 5개월로 늘려 카카오 AI 서비스에 대한 체험과 의견 수렴을 강화한다. 선발자는 약 100만 원 상당의 AI 서비스 이용 기회와 다양한 혜택을 받으며, 지원자 전원에게 카카오 이모티콘 플러스 1개월 이용권이 제공된다. ## KANANA 429의 의미와 목적 - 카카오의 통합 AI 브랜드 ‘카나나’와 HTTP 상태 코드 `429 Too Many Requests`를 결합한 이름이다. - AI에 대한 관심과 아이디어가 넘치는 사람들을 상징한다. - 카카오 AI 기술과 서비스를 알리고, 실제 사용자와 다양한 분야의 의견을 수렴하기 위해 운영된다. ## 지난해 앰배서더 활동 - 지난해에는 20명을 선발해 약 3개월간 운영했다. - 주요 활동은 다음과 같다. - 카카오톡 오픈채팅을 통한 상시 소통 - 월 1회 오프라인 밋업과 자율 소모임 - 카카오 신규 AI 서비스 사전 체험 - 카카오 크루와의 네트워킹 - AI 서비스·모델·기술 리뷰 콘텐츠 제작 - 약 100개의 콘텐츠가 제작됐으며, 활동 종료 후 우수 앰배서더 5명을 선정해 시상했다. - 참여자에게는 앰배서더 전용 스페셜 굿즈도 제공됐다. ## 올해 신설된 3개 활동 분야 - **AI 전문가** - 카카오의 AI 서비스와 모델 등 최신 기술을 체험한다. - 기술 내용을 분석하고 심층 리뷰를 작성한다. - **크리에이터** - 카카오 AI를 활용하는 방법과 사례를 콘텐츠로 제작한다. - 일반 사용자에게 AI 서비스 활용법을 알리는 역할을 맡는다. - **대학생** - 캠퍼스 안팎에서 카카오 AI를 홍보한다. - 대학생과 일반 사용자의 의견을 수집하고 전달한다. ## 모집 규모와 활동 혜택 - 총 100명을 선발한다. - 활동 기간은 지난해 3개월에서 올해 5개월로 연장됐다. - 선발자에게는 다음 혜택이 제공된다. - 약 100만 원 상당의 AI 서비스 사용 기회 - 분야별 특화 활동 지원 - 카카오 AI 관계자와의 소통 및 네트워킹 - 기타 부가 혜택 - 모든 지원자에게 카카오 이모티콘 플러스 1개월 무료 이용권을 지급한다. ## 지원 방법과 일정 - 지원 마감: **2026년 2월 19일 정오** - 지원 방법: - 카카오 AI 기술과 관련된 콘텐츠를 게시한다. - 해당 콘텐츠의 URL을 모집 페이지에 제출한다. - 합격자 발표: **2026년 3월 4일** - 카카오 공식 카카오톡 채널 메시지로 개별 안내한다. - 첫 발대식: **2026년 3월 13일** - 카카오 AI 캠퍼스에서 진행될 예정이다. AI 기술 리뷰, 활용 콘텐츠 제작, 캠퍼스 홍보에 관심이 있다면 자신의 전문성과 활동 분야에 맞는 부문을 선택해 지원하는 것이 적합하다. 지원 전 AI 관련 콘텐츠를 미리 준비하고, 단순 홍보보다 실제 사용 경험과 구체적인 의견을 담는 것이 유리할 것으로 보인다.

원문 읽기(새 탭에서 열림)
kakao원문

Kanana-2 개발기 (1): Pre-training에서의 의사결정들을 중심으로 (새 탭에서 열림)

카카오는 전문가 혼합(MoE) 아키텍처를 적용하여 추론 효율을 극대화한 'Kanana-2' 모델 시리즈를 공개하고, 이를 확장한 155B 규모의 대형 모델 학습 과정과 기술적 노하우를 공유했습니다. 이번 개발의 핵심은 Muon 옵티마이저와 MuonClip 등의 최신 기술을 도입하여 대규모 학습의 안정성을 확보하고 비용 효율성을 높인 데 있습니다. 특히 한국어 LLM 생태계의 연구 기반을 넓히기 위해 합성 데이터가 포함되지 않은 순수 베이스 모델을 공개함으로써 지속 가능한 AI 연구 환경 구축을 목표로 합니다. **전문가 혼합(MoE) 아키텍처와 효율성** * 전체 32B 파라미터 중 추론 시에는 3B만 활성화하도록 설계하여, 거대 모델의 지능을 유지하면서도 연산 비용을 획기적으로 낮췄습니다. * MoE 학습에 필수적인 커널들을 직접 개발하여 적용함으로써 성능 손실 없이 학습 속도를 높이고 메모리 사용량을 줄였습니다. * 현재 학습 중인 155B 모델(활성 17B)은 8.9T 토큰 학습만으로도 MMLU, KMMLU 등 주요 벤치마크에서 글로벌 경쟁 모델 대비 우수한 성능을 입증하고 있습니다. **연구를 위한 통제된 테스트베드 구축** * 'Kanana-2-30b-a3b-base-2601' 모델은 성능 향상을 유도하는 합성 추론(Reasoning) 데이터를 의도적으로 배제하고 학습되었습니다. * 이는 미세 조정이나 강화 학습 시 발생하는 데이터 불일치 현상을 연구하기 위해, 오염되지 않은 깨끗한 '베이스 모델'이 필요한 연구자들을 위한 결정입니다. * 한국어 LLM 커뮤니티가 모델의 변화 과정을 정밀하게 측정하고 추론 연구를 지속할 수 있는 기초 자산 역할을 수행합니다. **Muon 옵티마이저와 Polar Express 적용** * 기존의 AdamW를 대체하여 파라미터 업데이트 시 그라디언트를 직교화(Orthogonalize)하는 Muon 옵티마이저를 채택하여 학습 효율을 높였습니다. * 업데이트 행렬 계산 시 일반적인 Newton-Schulz 알고리즘 대신, 정확도가 더 높은 Polar Express 알고리즘을 사용해 대규모 학습 후반부의 노이즈를 줄였습니다. * RMSNorm의 파라미터화와 학습률(LR) 조정 등 세부적인 디테일을 최적화하여 수천억 규모의 모델에서도 안정적인 수렴을 달성했습니다. **MuonClip을 통한 대규모 학습 안정화** * 대형 모델 학습 시 발생하는 로짓 폭주(Logit Explosion)를 방지하기 위해 Kimi-K2에서 제안된 MuonClip 기법을 도입했습니다. * 효율적인 연산을 위해 Flash Attention 커널을 수정하여 내부의 Max Logit 값을 실시간으로 반환받아 모니터링과 클리핑에 활용했습니다. * 실험 결과, MuonClip은 높은 학습률 설정에서도 모델이 발산하지 않도록 잡아주며, 훈련이 수렴하더라도 발생할 수 있는 잠재적인 성능 저하 요인을 효과적으로 억제함을 확인했습니다. 카카오의 Kanana-2 개발 사례는 단순한 모델 공개를 넘어, 대규모 MoE 모델 학습에서 발생하는 엔지니어링 이슈를 해결하는 구체적인 방법론을 제시합니다. 특히 고성능 오픈소스 모델을 활용하려는 개발자와 연구자들에게는 효율적인 추론 구조와 더불어, 탄탄한 기초 모델을 기반으로 한 한국어 특화 AI 연구의 새로운 가능성을 제공할 것입니다.

kakao원문

Kanana-2 개발기 (2): 개선된 post-training recipe를 중심으로 (새 탭에서 열림)

카카오는 차세대 언어모델 Kanana-2를 공개하며, 단순한 대화형 AI를 넘어 에이전트 환경에 최적화된 성능을 구현하기 위한 고도화된 Post-training 레시피를 적용했습니다. 이번 모델은 Pre-training과 Post-training 사이의 'Mid-training' 단계를 도입하여 추론 능력을 극대화하는 동시에, 한국어 성능 저하 문제를 해결하기 위해 기존 학습 데이터를 재학습시키는 전략을 사용했습니다. 결과적으로 Kanana-2는 도구 호출(Tool Calling)과 복잡한 지시 이행 능력에서 비약적인 발전을 이루었으며, 특히 Thinking 모델은 고난도 수학 및 코딩 영역에서 글로벌 수준의 성능을 입증했습니다. ### 성능의 가교 역할을 하는 Mid-training * **도입 배경**: 일반적인 사전 학습(Pre-training)만으로는 복잡한 추론이나 도구 사용 능력을 갖추기 어렵기 때문에, 본격적인 미세 조정 전 단계로서 모델의 잠재력을 끌어올리는 중간 단계를 설계했습니다. * **데이터 구성**: 최신 고성능 모델에서 추출한 200B 규모의 고품질 영어 추론 데이터와 수학, 코드 데이터를 집중적으로 학습시켰습니다. * **치명적 망각(Catastrophic Forgetting) 방지**: 영어 추론 데이터 학습 시 한국어 성능이 하락하는 문제를 방지하고자, 사전 학습 데이터 중 한국어 데이터를 포함한 50B 토큰을 일정 비율로 섞어 학습(Replay 전략)함으로써 언어 균형을 유지했습니다. * **효과**: Mid-training을 거친 모델은 기본 모델 대비 수학(MATH) 및 코딩(HumanEval) 벤치마크에서 유의미한 향상을 보였으며, 이후 Instruct 학습 시 더 빠른 수렴 속도와 높은 최종 성능을 나타냈습니다. ### 에이전트 능력을 강화한 Instruct 모델 * **SFT 전략의 최적화**: 기존 Kanana-1.5 데이터셋에 Nemotron 등 오픈소스 고품질 데이터를 단순히 교체하기보다 추가로 통합(Supplementation)했을 때, 전반적인 성능과 지시 이행 능력의 균형이 가장 잘 유지됨을 확인했습니다. * **Agentic AI 역량**: 실질적인 도구 활용을 위해 단일·다중·병렬 도구 호출 능력을 강화했으며, 답변의 길이, 언어 설정, 특정 단어 제외 등 복잡한 제약 조건을 준수하는 지시 이행 능력을 고도화했습니다. * **Parallel RL 파이프라인**: 대화 스타일과 선호도를 학습하는 DPO(Direct Preference Optimization)와 객관적인 정답이 존재하는 추론/코딩 성능을 높이는 PPO(Proximal Policy Optimization)를 병렬로 적용하여 효율적인 학습 구조를 구축했습니다. * **신뢰성 개선**: RL 단계 이후 KTO(Kahneman-Tversky Optimization) 기반의 Calibration Tuning을 추가하여 모델 답변의 신뢰도를 높이고 환각 현상을 줄였습니다. ### 추론에 특화된 Thinking 모델 * **CoT 기반 학습**: 모델이 문제 해결 과정을 단계별로 사고하는 '사고의 사슬(Chain-of-Thought)'을 학습하도록 SFT 데이터를 구성했습니다. * **Rule-based RL**: 수학과 코딩처럼 정답이 명확한 도메인에 대해 규칙 기반 보상(Reward) 모델을 적용하여, 모델 스스로 더 나은 추론 경로를 탐색하고 검증하도록 유도했습니다. * **성능 도약**: Thinking 모델은 AIME25 벤치마크에서 기본 모델(9.21) 대비 약 5배 향상된 50.0점을 기록했으며, 실시간 코딩 테스트인 LiveCodeBench에서도 글로벌 수준의 경쟁력을 확보했습니다. 이번 Kanana-2 개발 과정은 대규모 추론 데이터 주입 시 발생하는 언어적 편향을 '사전 데이터 리플레이'로 해결하고, DPO와 PPO를 병렬로 활용하여 효율성을 극대화한 사례로 평가됩니다. 복잡한 추론과 도구 활용이 필요한 에이전트 서비스를 기획 중이라면, 단순 Instruct 모델보다 Mid-training을 통해 기초 체력을 다진 후 Thinking SFT가 적용된 모델을 활용하는 것이 더욱 안정적인 성능을 기대할 수 있는 방법입니다.

kakao원문

“생각하고 답변하는” 카카오의 하이브리드 멀티모달 언어모델, Kanana-v-4b-hybrid 개발기 (새 탭에서 열림)

카카오가 개발한 'Kanana-v-4b-hybrid'는 단순한 이미지 인식을 넘어 논리적 추론과 자기 점검 기능을 갖춘 하이브리드 멀티모달 언어모델입니다. 이 모델은 단일 시스템 내에서 일상적인 대화와 복잡한 시각적 추론을 동시에 수행하며, 특히 한국어 특유의 섬세한 제약 조건을 정확히 이해하고 처리하는 데 최적화되어 있습니다. 이를 통해 한국어 기반의 검정고시 및 수능 문항 평가인 KoNET에서 92.8점이라는 높은 성적을 거두며 한국형 AI의 새로운 가능성을 입증했습니다. ### 하이브리드 대응을 위한 단일 모델 구조 * 직관적 응답이 필요한 일반 대화와 논리적 단계가 필요한 추론 모델을 분리하지 않고 하나의 모델로 통합했습니다. * 별도의 라우팅(Routing) 시스템 없이도 한 대화 세션 내에서 시시각각 변하는 질의 성격에 유연하게 대응할 수 있습니다. * 모델 통합을 통해 응답 톤, 포맷, 안전 정책의 일관성을 유지하며, 시스템 운영 복잡도와 유지보수 비용을 획기적으로 낮췄습니다. ### 검증 가능한 결론을 도출하는 시각적 추론 * 이미지를 단순히 설명하는 수준을 넘어, 이미지 내 정보를 종합하고 조건을 적용하여 결론을 도출하는 '시각적 추론'에 집중했습니다. * 모델 스스로 정보 종합, 추론 전개, 결과 검증, 최종 답변의 단계를 거치도록 설계되어 답변의 근거가 명확합니다. * 영수증 검산, 표 기반 조건 필터링, 이미지 기반 수학 문제 풀이 등 단순 OCR로는 해결하기 어려운 복잡한 과제에서 높은 정확도를 보여줍니다. ### 신뢰도를 높이는 자기 점검(Reflection) 메커니즘 * 자신의 추론 과정을 스스로 재검토하여 모순이나 실수 가능성을 찾아내는 자기 점검 기능을 탑재했습니다. * 복잡한 멀티모달 질의에서 발생하기 쉬운 조건 누락이나 사소한 계산 실수를 스스로 발견하고 수정하는 패턴을 보입니다. * 이러한 '자기 수정' 과정은 모델의 단순한 정확성을 넘어, 사용자가 AI의 답변을 믿고 사용할 수 있게 만드는 핵심적인 신뢰 요인이 됩니다. ### 한국어 직관을 보존하는 로컬 추론 프로세스 * '~만 제외하고', '단, ~인 경우에만'과 같은 한국어 특유의 복잡한 예외 및 조건부 표현을 번역 없이 한국어 그대로 사고합니다. * 영문 추론 과정에서 발생할 수 있는 의미 왜곡이나 정보 누락을 방지하여 한국어 질의의 의도를 끝까지 유지합니다. * 이미지 속 한국어 텍스트 정보를 다른 언어로 변환하지 않고 직접 처리함으로써 정보의 손실 없는 논리 전개가 가능합니다. Kanana-v-4b-hybrid는 높은 기술적 완성도를 바탕으로 실제 서비스 환경에서 비용 효율성과 정확성을 동시에 잡으려는 환경에 적합합니다. 특히 한국어 환경에서의 정밀한 업무 보조나 교육용 AI 솔루션처럼 정답의 신뢰도가 중요한 분야에서 이 모델의 하이브리드 추론 능력은 강력한 경쟁력이 될 것입니다.

kakao원문

초경량 클래식 형태소 분석기 개발기 (새 탭에서 열림)

카카오는 모바일 환경의 엄격한 리소스 제한을 극복하기 위해 C++20 기반의 초경량 형태소 분석기를 직접 개발했습니다. 최신 딥러닝 방식 대신 전통적인 Viterbi 알고리즘과 LOUDS 기반의 Trie 압축 기술을 결합하여, 바이너리 크기를 200KB 수준으로 최소화하면서도 효율적인 사전 탐색 성능을 확보하는 데 성공했습니다. ### Rust 대신 C++20을 선택한 이유 * **바이너리 크기 최적화**: Rust는 현대적인 기능을 제공하지만 표준 라이브러리 포함 시 바이너리 크기가 MB 단위로 커지는 경향이 있어, KB 단위의 관리가 필요한 모바일 환경에는 부적합했습니다. * **기존 인프라 활용**: 모바일 OS 환경에 이미 포함된 C++ 표준 라이브러리를 활용함으로써 최종 결과물 크기를 약 200KB 수준으로 억제했습니다. * **현대적 문법 적용**: C++20의 `Concepts`를 사용하여 템플릿 제약을 명확히 하고, `std::span`과 `std::ranges` 등을 통해 메모리 안전성과 코드 가독성을 동시에 높였습니다. ### LOUDS 알고리즘을 통한 사전 데이터 압축 * **비트 시퀀스 기반 트리**: 트리 구조를 포인터 대신 비트열로 표현하는 LOUDS(Level-Order Unary Degree Sequence)를 채택하여 메모리 사용량을 정보 이론적 하한에 가깝게 줄였습니다. * **높은 압축률 달성**: 약 76만 개의 노드를 가진 방대한 사전 데이터를 단 9.4MB로 압축했으며, 이는 일반적인 CSV 방식 대비 훨씬 효율적인 수치입니다. * **한글 최적화 인코딩**: 한글을 2바이트로 처리하고 외국어는 플래그로 구분하는 등 별도의 내부 인코딩 방식을 적용하여 사전의 물리적 크기를 추가로 절감했습니다. ### Select 비트 연산 최적화와 성능 개선 * **병목 지점 파악**: LOUDS 구조에서 특정 노드의 위치를 찾는 `select0` 연산이 전체 사전 탐색 시간의 약 90%를 점유하는 성능 병목임을 확인했습니다. * **인덱싱 기반 탐색**: 비트 시퀀스를 64비트 청크로 나누고 각 구간까지의 '0의 누적 개수'를 미리 기록하여, 바이너리 서치를 통해 탐색 범위를 획기적으로 좁혔습니다. * **비트 병렬 처리**: 청크 내부에서는 비트 연산과 시프트를 조합한 병렬 카운팅 기법을 활용하여 하드웨어 수준에서 연산 속도를 극대화했습니다. ### 실용적인 결론 모바일 클라이언트 환경처럼 리소스가 극도로 제한된 곳에서는 무거운 딥러닝 모델보다 최적화된 클래식 알고리즘이 더 강력한 대안이 될 수 있습니다. 특히 LOUDS와 같은 정적 트리 압축 기법과 비트 수준의 연산 최적화를 결합하면, 성능 손실 없이도 극적인 용량 절감이 가능함을 이 개발 사례가 증명하고 있습니다.

kakao원문

더 똑똑하고 효율적인 Kanana-2 오픈소스 공개 (새 탭에서 열림)

카카오는 사용자의 명령 맥락을 파악하고 능동적으로 동작하는 에이전틱 AI(Agentic AI) 구현에 최적화된 차세대 언어모델 'Kanana-2'를 오픈소스로 공개했습니다. 글로벌 프런티어 모델인 Qwen3-30B-A3B와 대등한 성능을 갖춘 이번 모델은 도구 호출(Tool Calling)과 지시 이행 능력을 대폭 강화하여 실무적인 활용도를 극대화했습니다. 특히 한국어 처리 효율성을 30% 이상 개선하고 추론 특화 모델을 라인업에 추가함으로써, 고도화된 논리적 사고가 필요한 서비스 개발에 강력한 토대를 제공합니다. **다양한 연구 및 서비스 요구사항을 충족하는 세 가지 모델 라인업** * **Kanana-2-30b-a3b-base**: 사전 학습 단계의 웨이트를 포함한 기본 모델로, 연구자들이 자체 데이터를 활용해 자유롭게 파인 튜닝하여 새로운 모델을 개발할 수 있는 기초가 됩니다. * **Kanana-2-30b-a3b-instruct**: 사용자의 지시를 정확히 이해하고 수행하는 능력을 극대화한 버전으로, 일반적인 대화 및 작업 수행에 최적화되어 있습니다. * **Kanana-2-30b-a3b-thinking**: 카카오가 처음으로 선보이는 추론 특화 모델로, 수학이나 코딩 등 복잡한 논리적 사고가 필요한 과제에서 뛰어난 성능을 발휘하며 높은 지시 이행 능력을 동시에 유지합니다. **에이전틱 AI 구현을 위한 도구 호출 및 지시 이행 성능 강화** * **Multi-turn Tool Calling**: 외부 도구를 자유자재로 다루는 능력을 이전 모델(Kanana-1.5) 대비 3배 이상 개선하여, 모델 컨텍스트 프로토콜(MCP) 활용성을 극대화했습니다. * **정교한 지시 이행**: 사용자의 복잡하고 단계적인 요구사항을 정확히 파악하여 결과물을 생성하며, 추론 모델에서도 이러한 성능이 저하되지 않도록 설계되었습니다. * **다국어 지원 확대**: 기존 한국어와 영어에 더해 일본어, 중국어, 태국어, 베트남어까지 총 6개 국어를 지원하여 글로벌 서비스 대응 능력을 높였습니다. **대규모 트래픽 처리를 위한 아키텍처 및 효율성 개선** * **MLA(Multi-head Latent Attention)**: 메모리 점유를 압축하여 긴 문맥(Long Context)을 효율적으로 처리할 수 있도록 설계되었습니다. * **MoE(Mixture of Experts)**: 추론 시 필요한 파라미터만 활성화하는 전문가 혼합 구조를 통해 거대 모델의 성능은 유지하면서 연산 비용과 응답 속도를 획기적으로 개선했습니다. * **한국어 최적화 토크나이저**: 새롭게 학습된 토크나이저를 통해 기존 모델 대비 한국어 토큰 효율을 30% 이상 향상시켜, 더 적은 자원으로 빠른 응답(High Throughput)이 가능합니다. **실용적인 결론 및 제안** Kanana-2는 고성능과 효율성을 동시에 잡은 모델로, 특히 한국어 기반의 복잡한 에이전트 서비스를 구축하려는 개발자에게 최적의 선택지입니다. 허깅페이스(Hugging Face)를 통해 Base 모델부터 추론 특화 모델까지 모두 공개되어 있으므로, 목적에 맞는 모델을 선택해 즉시 파인 튜닝하거나 서비스에 적용해 보실 것을 추천합니다.

kakao원문

MongoDB 8.0 업그레이드 해야하는 12가지 이유 (새 탭에서 열림)

MongoDB 8.0은 기존 버전에서 지적받았던 성능상의 아쉬움을 해결하고 안정성을 극대화하는 데 초점을 맞춘 중대한 업데이트입니다. 약 5년의 장기 지원 정책을 도입하여 운영의 지속성을 보장하며, 쓰기 처리량 향상과 쿼리 최적화 등 기술적 아키텍처 개선을 통해 실질적인 성능 이득을 제공합니다. 특히 대규모 트래픽을 처리하는 환경에서 쓰기 지연 시간을 줄이고 복제 효율을 높인 점이 이번 버전의 핵심적인 결론입니다. **장기 지원 정책과 온프레미스 지원 확대** * MongoDB 8.0은 출시 후 5년간(2029년 10월까지) 지원되는 사실상의 LTS(Long-Term Support) 버전으로, 잦은 업그레이드 부담을 줄여줍니다. * 기존에 클라우드(Atlas)에만 우선 적용되던 최신 기능들을 온프레미스 환경에서도 마이너 릴리스를 통해 빠르게 도입할 수 있도록 정책이 변경되었습니다. * 이를 통해 운영 조직은 안정 중심의 운영과 신규 기능 도입 사이에서 유연한 전략을 선택할 수 있는 기반을 마련했습니다. **Write Concern "majority" 성능의 혁신적 개선** * 쓰기 완료 판단 기준을 데이터가 파일에 물리적으로 기록되는 시점(`lastApplied`)에서 Oplog에 기록되는 시점(`lastWritten`)으로 변경했습니다. * 이러한 내부 동작 방식의 변화로 세컨더리 노드의 적용 대기 시간이 단축되어, 쓰기 처리량이 이전 버전 대비 약 30~47% 향상되었습니다. * 세컨더리에서 즉시 읽기 시 발생할 수 있는 데이터 일관성 문제는 '인과적 일관성 세션'을 통해 보완 가능하도록 설계되었습니다. **벌크 쓰기(Bulk Write) 및 Oplog 처리 최적화** * 단일 요청으로 여러 컬렉션에 대한 대량 작업을 동시에 수행할 수 있는 새로운 데이터베이스 명령어가 도입되었습니다. * 기존에 문서마다 개별적으로 생성되던 Oplog 엔트리를 최대 500개까지 하나로 묶어 기록하는 최적화가 적용되었습니다. * 이 개선을 통해 세컨더리 노드의 복제 지연(Replication Lag) 발생 가능성이 크게 낮아지고 전체적인 쓰기 효율이 개선되었습니다. **단건 조회 최적화를 위한 Express Plan 도입** * `_id` 기반의 단건 조회나 유니크 인덱스를 사용하는 쿼리에 대해 복잡한 옵티마이저 과정을 생략하는 'Express Plan'이 추가되었습니다. * 쿼리 파싱 직후 즉시 실행 경로를 확보함으로써 불필요한 플래닝 오버헤드를 제거하고 응답 속도를 극대화했습니다. * 이는 빈번하게 발생하는 PK 기반 조회의 효율을 높여 전체 시스템의 리소스 소모를 줄여주는 효과를 제공합니다. MongoDB 8.0은 성능 저하에 대한 우려를 불식시키기 위해 아키텍처 수준의 최적화를 대거 반영한 버전입니다. 5년이라는 긴 지원 기간과 가시적인 성능 향상을 고려할 때, 대규모 분산 환경을 운영하는 조직이라면 안정화 기간을 거친 후 8.0으로의 업그레이드를 적극적으로 검토할 것을 추천합니다. 특히 쓰기 성능 병목이나 복제 지연 문제를 겪고 있는 서비스에 강력한 해결책이 될 것입니다.

kakao원문

​한국어와 이미지를 한 번에, 카카오의 멀티모달 임베딩 모델 개발기 (새 탭에서 열림)

카카오는 한국어 환경과 다양한 서비스 시나리오에 최적화된 멀티모달 임베딩 모델인 'Kanana-v-embedding'을 개발했습니다. 이 모델은 비전-언어 모델(VLM) 아키텍처를 기반으로 텍스트와 이미지를 하나의 공통된 의미 공간에 표현하여, 검색, 추천, RAG(검색 증강 생성) 등에서 발생하는 복합적인 모달리티 요구사항을 효과적으로 해결합니다. 특히 지시어(Instruction) 기반 학습과 가변 차원 임베딩 기술을 적용하여 실무적인 유연성과 성능을 동시에 확보한 것이 특징입니다. **멀티모달 임베딩의 개념과 VLM 기반 아키텍처** * 텍스트와 이미지를 고정 길이의 벡터로 변환하여 동일한 의미 공간상에 배치함으로써, 서로 다른 형태의 데이터 간 유사도를 코사인 유사도 등으로 직접 비교할 수 있게 합니다. * 기존 CLIP 모델이 텍스트와 이미지를 독립적으로 처리하여 복합 입력에 한계가 있었던 점을 극복하기 위해, VLM 기반 프레임워크를 채택했습니다. * 텍스트와 이미지 토큰이 트랜스포머 레이어를 거친 후, 마지막 히든 스테이트의 [EOS] 토큰 표현을 추출하고 정규화하여 최종 임베딩으로 사용합니다. **지시어 기반 학습 및 가변 차원 지원** * 검색, 추천, 분류 등 수행하려는 태스크의 목적에 맞는 지시어(Instruction)를 입력 쿼리와 함께 제공하여, 목적에 특화된 임베딩 표현을 생성할 수 있도록 설계했습니다. * 마트료시카 표현 학습(Matryoshka Representation Learning) 기법을 적용하여 64차원부터 2,048차원까지 다양한 임베딩 크기를 지원합니다. * 이를 통해 지연 시간(Latency)이 중요한 서비스 환경과 고성능 품질이 필요한 환경 모두에 유연하게 대응할 수 있는 운영 편의성을 갖췄습니다. **성능 극대화를 위한 학습 테크닉과 KoEmbed 데이터셋** * 그래디언트 캐싱(Gradient Caching) 기술을 도입하여 GPU 메모리 한계를 극복하고 대규모 배치 사이즈(8k 이상) 학습을 구현함으로써 대조 학습의 효율을 극대화했습니다. * 하드 네거티브 마이닝(Hard Negative Mining)을 통해 정답과 유사하지만 실제로는 오답인 샘플을 학습에 활용하여 모델의 변별력을 높였습니다. * 한국어와 카카오 서비스 특유의 문맥을 반영하기 위해 텍스트-텍스트, 텍스트-이미지 쌍으로 구성된 대규모 내부 데이터셋 'KoEmbed'를 구축하여 학습에 투입했습니다. **벤치마크를 통한 성능 검증 및 실무 적용** * 한국어 텍스트 임베딩 성능 측정 지표인 Ko-StrategyQA를 포함한 MTEB 벤치마크에서 기존 모델들을 제치고 종합 1위를 기록하며 탁월한 한국어 이해 능력을 입증했습니다. * 멀티모달 검색 성능 지표인 M-BEIR에서도 글로벌 수준의 성능을 확인하여 텍스트-이미지 교차 검색 및 추천에서의 경쟁력을 확보했습니다. * 이 모델은 카카오톡 앨범 검색, 유사 상품 추천, 멀티모달 RAG 시스템 등 다양한 실 서비스에 적용되어 사용자 경험을 개선하는 데 활용될 예정입니다. Kanana-v-embedding은 단순한 기술적 연구를 넘어 한국어 사용자에게 실질적인 가치를 제공하기 위해 최적화된 모델입니다. 한국어 서비스 환경에서 텍스트와 이미지를 동시에 다루며 성능과 효율성을 모두 잡아야 하는 개발자들에게 이 모델의 대조 학습 최적화 기법과 가변 차원 임베딩 방식은 훌륭한 기술적 이정표가 될 것입니다.

kakao원문

더욱 똑똑하게 답하며, 더욱 풍부한 감정표현을 향한 Kanana-o의 진화 과정 (새 탭에서 열림)

카카오의 멀티모달 언어모델 Kanana-o는 텍스트, 이미지, 음성을 동시에 이해하고 처리하여 사람처럼 자연스러운 상호작용을 지향하는 통합 모델입니다. 연구팀은 모델이 입력 모달리티에 관계없이 일관된 지능을 발휘하도록 고품질의 복합 지시 이행 데이터를 구축하고, 음성 토큰화 기술을 통해 풍부한 감정 표현력을 확보했습니다. 그 결과 Kanana-o는 한국어 맥락을 깊이 있게 이해하며 복잡한 명령을 수행하는 동시에, 사람과 유사한 섬세한 음성 반응을 제공하는 독보적인 성능을 입증했습니다. **멀티모달 지시 이행 능력의 고도화** * 단순한 질의응답을 넘어 요약, 문체 변환, 형식 제한 등 복합적인 제약 조건이 포함된 오디오 기반 지시 이행 데이터셋을 직접 설계했습니다. * 텍스트 입력 시에는 뛰어난 성능을 보이지만 오디오 입력 시 성능이 저하되는 기존 모델들의 한계를 극복하기 위해, 모달리티에 무관하게 안정적인 지능을 유지하는 일반화(Domain-generalization) 작업에 집중했습니다. * 한국어 음성 지시 이행 벤치마크인 Speech-KoMT-Bench에서 글로벌 경쟁 모델 대비 압도적인 성능을 기록하며 한국어 환경에서의 우수성을 증명했습니다. **이미지-오디오-텍스트 통합 데이터 구축** * 이미지를 보면서 음성으로 질문하는 등 서로 다른 모달리티가 결합된 시나리오에서도 정교하게 동작하도록 이미지-오디오-텍스트 통합 데이터셋을 구축했습니다. * 시각 정보와 청각 정보를 동시에 정렬(Alignment)함으로써, 모델이 복합적인 입력 환경에서도 사용자의 의도와 맥락을 정확히 파악할 수 있도록 학습시켰습니다. **오디오 토큰화를 통한 자연스러운 감정 표현** * 기존의 단조로운 음성 합성 방식을 넘어, 음성 데이터를 이산적인 토큰(Discrete Audio Tokens)으로 변환하여 언어모델이 텍스트와 함께 예측하도록 설계했습니다. * 이를 통해 단순한 텍스트 전달이 아닌, 발화자의 감정선, 호흡, 웃음소리, 억양 등 미묘한 운율(Prosody) 정보를 풍부하게 담아낼 수 있게 되었습니다. * 사용자의 감정을 실시간으로 인식하고 이에 어울리는 목소리 톤으로 응답함으로써, 기계적인 비서가 아닌 실제 사람과 대화하는 듯한 정서적 유대감을 제공합니다. Kanana-o는 단순히 기술적 지표를 높이는 것에 그치지 않고, 실제 서비스 환경에서 사용자가 체감할 수 있는 '이해력'과 '표현력'의 조화를 이루어냈습니다. 한국어에 특화된 강력한 지능과 섬세한 감성 표현 기술의 결합은 향후 더욱 몰입감 있고 실질적인 도움을 주는 AI 경험을 제공할 것으로 기대됩니다.

kakao원문

AI TOP 100이 우리에게 남긴 것들 (새 탭에서 열림)

카카오의 'AI Native 전략 팀'은 단 2주라는 물리적으로 불가능해 보이는 일정 속에서 AI를 극한으로 활용해 'AI TOP 100' 경진대회 시스템을 성공적으로 구축했습니다. 이번 프로젝트는 단순한 도구 도입을 넘어 기획서를 AI 프로토타입으로 대체하고 개발의 99%를 AI에게 위임하는 등 소프트웨어 개발 패러다임의 근본적인 전환을 증명했습니다. 결국 AI는 개발자를 대체하는 것이 아니라, 개발자가 더 높은 차원의 의사결정과 설계에 집중할 수 있도록 능력을 확장하는 강력한 파트너임을 확인시켜 주었습니다. **전통적 방법론을 탈피한 AI 네이티브 전략** * **물리적 한계 돌파:** 기획부터 배포까지 통상 수개월이 걸리는 공정을 예선과 본선 각각 2주라는 초단기 일정으로 단축하기 위해 AI 정면 돌파를 선택했습니다. * **기획서 없는 개발:** 상세 기획서나 화면 설계서 대신, 멤버 전원이 AI로 실제 작동하는 프로토타입을 제작하여 이를 바탕으로 요구사항을 확정하는 '초고속 프로토타이핑' 방식을 도입했습니다. * **PoC 중심의 애자일:** 추상적인 컨셉을 AI에게 던져 즉시 작동 가능한 PoC(Proof of Concept) 코드를 생성하고, 이를 검증하며 기능을 확정하는 '구현-피드백-전환' 사이클을 극단적으로 짧게 가져갔습니다. **AI와 개발자의 협업 모델 변화** * **99%의 코드 위임:** Cursor와 Claude Code 등을 활용하여 전체 코드의 대부분을 AI가 작성하게 했으며, 개발자는 직접 타이핑하는 대신 AI에게 의도를 설명하고 결과물을 검토하는 역할에 집중했습니다. * **압도적인 생산성:** 한 명의 개발자가 예선과 본선의 모든 프론트엔드 화면을 전담하거나, 하루에 2억 개의 토큰을 소모하며 시스템을 구축하는 등 기존 개발 방식으로는 불가능한 퍼포먼스를 기록했습니다. * **직무 경계의 확장:** 데이터 엔지니어가 백엔드 개발을 수행하고, 비개발자가 AI로 복잡한 알고리즘 문제를 해결하는 등 AI를 통해 개인의 기술적 한계를 넘어선 역할 수행이 가능해졌습니다. **기술적 난제와 인간의 역할(The Last Mile)** * **모델 간 논리 충돌:** AI가 제시하는 논리가 매우 탄탄하여 구성원 간 의견이 대립할 때, 최종적인 유지보수성과 시스템의 방향성을 고려해 최적의 답을 선택하는 것은 결국 시니어 개발자의 '경험'이었습니다. * **최종 의사결정의 주체:** AI는 수많은 해결책과 초안을 제시할 수 있지만, 해당 서비스의 특수성과 미래 가치를 판단하여 방향키를 쥐는 것은 여전히 사람의 몫임을 재확인했습니다. * **새로운 개발 표준의 정립:** AI 페어 프로그래밍이 일상화되면서, 개발자의 사고 흐름이 '선형적 구현'에서 'AI와 실시간 아이디에이션 및 즉각적 검증'으로 재편되었습니다. **실용적인 결론 및 제언** 미래의 개발 경쟁력은 AI를 단순한 보조 도구로 쓰는 것을 넘어, 업무 프로세스 전체를 AI 중심으로 재설계하는 'AI 네이티브' 역량에 달려 있습니다. 이제 개발자는 바닥부터 코드를 짜는 시간보다 AI가 생성한 결과물의 적합성을 판단하고 아키텍처 관점에서 통합하는 능력을 키워야 합니다. 'PoC 중심 개발'을 통해 불확실성을 속도로 돌파하는 경험을 쌓는 것이 새로운 개발 표준에 적응하는 핵심이 될 것입니다.