마키나락스 FDE 본부의 이 포지션은 최신 LLM 을 온디바이스 NPU 에 올리기 위한 변환·검증과 양자화 기술을 PyTorch·HuggingFace 등으로 정량 분석합니다. 양자화 전후 결과를 받아 어느 레이어·태스크가 얼마나 회귀했는지 리포트하는 이 도구는 그 평가 엔지니어링을 정면으로 입증합니다. 양자화 커널·NPU 하드웨어 최적화 깊이는 포트폴리오로 증명되지 않으므로 주장하지 않습니다. 전후 신호를 회귀 판정과 재검토로 잇는 사슬은 단순 지표 조회 맥락으로는 그대로 만들 수 없습니다.
최신 LLM 을 온디바이스 NPU 에 탑재하기 위한 모델 개발·변환·검증과 양자화 기술을 연구·적용합니다. 양자화 평가 도구가 직접 정렬됩니다.
PyTorch·HuggingFace·TFLite·ONNX·AIMET 등으로 모델 성능을 정량 분석·개선합니다. 평가 리포트가 환경과 정렬됩니다.
현장 데이터로 AI 문제를 정의하고 End-to-end 머신러닝 라이프사이클을 경험합니다. 양자화 평가가 비즈니스와 정렬됩니다.
양자화 평가 결과(모델·기법·레이어·태스크·전 정확도·후 정확도·지연·이상 플래그)를 받아, 규칙(정확도 회귀 임계 초과·지연 악화·결측)으로 점검이 필요한 레이어·태스크를 잡고 어디서 얼마나 떨어졌는지 근거와 함께 리포트로 정리합니다. 회귀 판정은 전후 차이 규칙이, 설명은 LLM 이 맡습니다. 모델·태스크 마스터를 붙여 표기를 정규화합니다. 탑재 가부 확정이 아니라 점검 우선순위입니다.
마키나락스 양자화 담당 엔지니어. 양자화 전후 지표를 스프레드시트로 비교하며 어디가 망가졌는지 찾던 일을, 한 리포트에서 회귀 레이어·태스크와 근거를 함께 보고 싶은 사람입니다.
양자화 전후 결과를 한 스키마로 묶고 모델·태스크 마스터를 붙이면, (a) 정확도 회귀·지연 악화를 규칙으로 잡고, (b) 어디서 얼마나 떨어졌는지 LLM 이 수치를 들어 풀며, (c) 많은 레이어·태스크를 모델별로 끊김 없이 리포트합니다.
양자화 전후 평가 결과를 받아 회귀 레이어·태스크를 규칙으로 잡고 근거 리포트로 보여주는 동작하는 도구입니다. 데이터는 평가 결과를 가정한 더미로 시작합니다.
회귀 판정을 심은 정답·검토자 2명 라벨과 비교해 정밀도·재현율과 일치도를 보여주는 화면입니다.
모델·양자화 기법별 회귀 지표와 사유 분포를 누적 집계해 약점을 보여주는 리포트입니다.
회귀 시나리오 12종(정확도 회귀·지연 악화)을 넣으면, 회귀 카드와 근거가 몇 초 안에 나오는 걸 시연합니다
일부러 만든 악성·결측 입력 30종(후 정확도 null·미등록 모델·모델 표기 흔들림)을 넣어도 출력 형식(스키마)이 한 번도 안 깨집니다
더미에 심은 정답 40건 중 회귀 판정이 일치한 게 36건(약 90%)입니다. 단, 정답·데이터를 모두 작성자가 만든 합성 기준이라 '성능 검증'이 아니라 '데모 조건에서의 동작'임을 명시합니다
진짜 성능 검증은 여기서 멈춥니다. 위 수치는 전부 작성자가 만든 더미데이터 자가채점이며, 실제 정밀도·재현율은 마키나락스의 실 양자화 평가 결과와 실 검토자가 있어야 측정 가능합니다. 이 도구는 그 검증을 바로 돌릴 수 있는 상태까지 만듭니다
이건 고객·실데이터 없이 혼자 만든 포트폴리오입니다. 모든 수치는 합성 데이터 자가채점이라 성능 증명이 아닙니다. 면접에서는 데모 동작과 실검증 준비 상태로 솔직히 설명하는 게 오히려 신뢰를 줍니다
이 포트폴리오가 입증하는 것은 양자화 전후 결과를 비교·회귀 탐지·리포트하는 평가 엔지니어링입니다. 양자화 커널 구현·NPU 하드웨어 최적화 같은 깊은 전문성은 포트폴리오로 증명되지 않으므로 주장하지 않으며, 모르는 깊이는 면접에서 솔직히 말하는 편이 낫습니다
정답을 작성자가 만들었으니 잘 맞는 게 당연합니다. 그래서 후 정확도 누락·미등록 모델·회귀 경계 같은 결측·경계 케이스를 더미에 일부러 섞어, 쉬운 회귀만 잡는 게 아님을 보여줍니다
이건 탑재 가부 확정이 아니라 점검 우선순위입니다. 회귀는 규칙이 정하고 합격 여부는 단정하지 않으며 '재검토·재학습 권고'로 표시합니다
모델·태스크 표기가 제각각입니다. 정규화로 같은 모델로 묶고, 못 묶은 건 추측하지 말고 '미매핑'으로 알립니다. 실제 도입 시 태스크 세트·임계가 더미와 다르므로 회귀 임계를 다시 맞춰야 합니다(도입 단계 과제로 분리)
① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.
양자화 전후 평가 결과 로그. 회귀 규칙·리포트가 가장 먼저 질의하는 테이블입니다. 후 정확도 결측·미등록 모델·모델 표기 흔들림·회귀 경계값을 일부러 섞고, label 로 정답 회귀를 심어 자가채점합니다.
| row_id | model_raw | model_id | task | layer | acc_before | acc_after | latency_ms | label | ts |
|---|---|---|---|---|---|---|---|---|---|
| qe_001 | 라마-7B | m_llama7b | qa | attn.0 | 0.82 | 0.81 | 40 | ok | 2026-03-04T09:00 |
| qe_002 | 라마 7B | m_llama7b | qa | mlp.12 | 0.82 | 0.6 | 38 | regression | 2026-03-05T09:00 |
| qe_003 | 큐원-4B | m_qwen4b | summary | attn.5 | 0.75 | 0.74 | 30 | ok | 2026-03-04T10:00 |
| qe_004 | 큐원-4B | m_qwen4b | summary | mlp.8 | 0.75 | — | 31 | ok | 2026-03-04T11:00 |
| qe_005 | 신규모델X | — | classify | head | 0.9 | 0.89 | 12 | ok | 2026-03-04T12:00 |
아래 Zod 스키마에 맞는 양자화 전후 평가 60행 JSON 배열로 생성합니다. 모델 4~6개, 태스크(qa/summary/classify)·레이어 분포, 정상 위주에 회귀를 섞습니다. label 규칙: acc_before-acc_after >= 0.1 이면 regression, 아니면 ok(acc_after null 이면 회귀 단정 보류해 ok).
z.object({ row_id: z.string(), model_raw: z.string(), model_id: z.string().nullable(), task: z.enum(["qa","summary","classify"]), layer: z.string(), acc_before: z.number(), acc_after: z.number().nullable(), latency_ms: z.number().int().nullable(), label: z.enum(["ok","regression"]), ts: z.string() })
쉬운 데이터만 만들지 말 것. 다음 하드 케이스를 의도적으로 섞어라(쉬운 회귀만 잡는 함정 회피): (1) 같은 모델의 표기 별칭('라마-7B'/'라마 7B', '큐원-4B'/'큐원 4B'처럼 model_master 로 정규화돼야 함) 3건 이상, (2) 미등록 모델(model_id=null) 2건, (3) 결측: acc_after/latency_ms 가 null 인 행 각 1~2건, (4) 경계값 정확도 회귀 임계 직상회(차이 0.10~0.16)·지연만 악화(정확도 유지) 각 2건, (5) 같은 모델의 특정 레이어가 반복 회귀하는 케이스 2~3건. label 은 위 규칙대로 정직하게. JSON 배열만.z.object({ row_id: z.string(), model_raw: z.string(), model_id: z.string().nullable(), task: z.enum(["qa","summary","classify"]), layer: z.string(), acc_before: z.number(), acc_after: z.number().nullable(), latency_ms: z.number().int().nullable(), label: z.enum(["ok","regression"]), ts: z.string() })| Python | 결과 파서·회귀 규칙·리포트 생성의 구현 언어입니다 |
| PyTorch | 양자화 전후 추론·지표 산출을 가정합니다 |
| HuggingFace | 모델·태스크 평가 세트 로딩을 가정합니다 |
| 딥러닝 | 양자화 기법(PTQ·QAT)별 결과 해석 기준입니다 |
| Zod | 평가 입력과 LLM 출력의 런타임 형식 검증입니다 |
| Claude | 회귀 원인·영향 설명 LLM 입니다 |
✓ pass → 그대로 멈춰도 완결입니다. 더 키우려면 2주차(회귀 판정이 맞았는지 확인)로 진행합니다.
✓ pass → 여기서 멈춰도 완결입니다. 더 키우면 3주차(모델·기법별 회귀 추이)로 진행합니다.
레이어·태스크 1건의 회귀 점검 카드. 등급·요인·근거를 한 스키마로 담아 리포트 카드에 씁니다. 탑재 가부 확정이 아니라 점검 우선순위입니다.
z.object({ model_id: z.string().nullable(), task: z.enum(["qa","summary","classify"]), severity: z.enum(["ok","watch","high","urgent"]), factors: z.array(z.enum(["acc_regression","latency_worse","unmapped_model","missing_metric"])), reason: z.string().min(20), evidence: z.string().min(8), hedge: z.string().nullable() })[
{
"input_ref": "qe_002 (라마-7B mlp.12 정확도 회귀)",
"output": {
"model_id": "m_llama7b",
"task": "qa",
"severity": "urgent",
"factors": [
"acc_regression"
],
"reason": "라마-7B QA 의 mlp.12 레이어가 양자화 후 정확도 0.82→0.60 으로 0.22 떨어졌습니다. 탑재 시 품질 저하 위험으로 해당 레이어 재검토·혼합정밀도 검토가 필요합니다.",
"evidence": "layer=mlp.12, acc_before=0.82, acc_after=0.60",
"hedge": null
}
},
{
"input_ref": "qe_010 (미스트랄-3B 지연 악화·후 정확도 결측)",
"output": {
"model_id": "m_mistral3b",
"task": "summary",
"severity": "high",
"factors": [
"latency_worse",
"missing_metric"
],
"reason": "지연이 90ms 로 악화됐는데 양자화 후 정확도가 비어 있습니다. 정확도 회귀는 단정하지 않고 재측정·지연 원인 점검이 필요합니다.",
"evidence": "latency_ms=90, acc_after=null",
"hedge": "후 정확도 결측이라 정확도 회귀는 단정하지 않습니다"
}
},
{
"input_ref": "qe_005 (미등록 모델)",
"output": {
"model_id": null,
"task": "classify",
"severity": "watch",
"factors": [
"unmapped_model"
],
"reason": "모델이 마스터에 없어 회귀를 단정하지 않습니다. 전후 차이는 작으나 모델 등록 후 재집계가 필요합니다.",
"evidence": "model_id=null, acc_before=0.9, acc_after=0.89",
"hedge": "미등록 모델이라 점검 등급은 추정하지 않습니다"
}
}
][자동 검증] 1. Zod parse 로 출력 형식(필드·enum)이 스키마를 통과하는지 확인합니다. 2. factors 가 회귀 규칙(전후 차이 임계·지연 악화)과 일치하는지 봅니다. 3. severity 를 심은 정답 label 과 비교해 정밀도·재현율을 계산합니다. 4. acc_after 가 null 이면 acc_regression 단정을 보류하고 탑재 가부 단정 표현을 차단합니다. [수동 검증] 1. 검토자 2명이 비동기로 회귀를 라벨링해 정밀도·재현율과 bootstrap Cohen's κ(두 사람 일치가 우연 이상인 정도, 0~1) 하한 0.6 이상을 봅니다. 2. 전체의 5% 를 사람이 직접 점검합니다.