1급
을 만드는 전 과정을 설명하고, 로 XSLM 을 직접 완성합니다. 예제 하나를 고르고, 내 설계와 그 이유를 소리 내어 설명해 보세요.
응시 자격
만 10세 이상부터 응시할 수 있습니다.
화면 공유 인터뷰
소너브 화상 기능을 통해서 전체 후 작업을 진행합니다.
1급 인터뷰 과제 — XSLM 만들기
- 심사관이 을 만드는 과정을 묻습니다 — 개발 환경, 와 프로젝트 구조, , , , 텍스트 생성, , XChat, 공개까지. 응시자는 주저 없이 자기 말로 답합니다.
- 답변을 마치면 응시자가 화면 공유로 XSLM 을 직접 완성합니다. 를 입력하고 실행해 학습한 를 저장하고, Runner 를 띄워 XChat 에서 내가 학습한 모델이 답하게 하면 시험이 끝납니다.
외부 나 다른 사람에게 맡기지 않고 직접 입력하고 실행합니다. 심사관은 작업 중에 출력과 코드의 뜻을 물을 수 있습니다.
자격증 공통 안내
인터뷰 질문 예시: 다음 낱말을 맞히는 인공지능
심사관 학생이 공부 노트를 쓸 때 다음 낱말을 맞혀 주는 을 만든다면, 어떻게 만들고 잘 되는지 어떻게 확인하겠습니까? 단계별로 설명해 보세요.
아래 네 단계로 답합니다. 단계마다 무엇을 말할지와 짧은 예를 보였습니다.
-
1. 목표
인공지능이 누구를 위해 무엇을 하는지 — 무엇이 들어가고 무엇이 나오는지 말합니다. 예: “학생이 ‘기계’를 치면 ‘학습’을 추천한다.”
-
2. 데이터
무엇으로, 얼마나 배우는지, 시험용으로 무엇을 떼어 두는지 말합니다. 예: “내 노트 문장 2,000개 — 80%로 배우고 20%는 시험용으로 떼어 둔다.”
-
3. 만드는 방법
안에서 어떻게 동작하는지, 무엇으로 만드는지 말합니다. 예: “ 이 어떤 낱말 뒤에 어떤 낱말이 오는지 세어, 가장 자주 온 다음 낱말을 추천한다.”
-
4. 확인
잘 되는지 어떻게 아는지 — 잴 숫자 하나와 한계 하나를 말합니다. 예: “시험 문장에서 실제 다음 낱말이 추천 세 개 안에 드는 비율을 센다. 바로 앞 낱말 하나만 보므로 긴 문장에서는 틀린다.”
심사관은 주제를 바꿀 수 있습니다 — 예를 들어 스팸 문자 거르기나 점심 메뉴 추천. 그래도 같은 네 단계로 답합니다. 급수가 높을수록 단계마다 더 자세히 설명하고, 인터뷰에는 이 질문 말고도 각 급수에 맞는 여러 질문과 과제가 있습니다.
무엇을 배우나
- 준비부터 ···텍스트 생성··XChat·공개까지, 을 만드는 전 과정을 단계마다 자기 말로 설명합니다.
- 로 XSLM 의 를 직접 입력하고 실행해, 학습한 로 XChat 에서 대화하는 데까지 완성합니다.
- 실행 출력(·생성한 글· 응답)을 확인하고, 막히면 를 읽고 고칩니다.
어떻게 평가하나
- XSLM 을 만드는 과정을 순서대로, 막힘없이 자기 말로 설명했는가
- 화면 공유로 XSLM 을 직접 완성해 XChat 에서 내가 학습한 모델이 답하게 했는가
- 실행 출력을 검증하고 오류를 해결한 과정을 설명했는가
예상 인터뷰 질문
아래 20개는 인터뷰에서 심사관이 할 수 있는 질문의 예입니다. 정답 낱말 하나를 맞히는 것이 아니라 소리 내어 설명해 보세요. 펼치면 설명 예시와 꼬리 질문이 보입니다. 공식 시험 문제는 아닙니다.
전체 흐름·개발 환경·데이터
-
1
심사관 이 무엇이고, 준비부터 XChat 대화까지 만드는 전체 순서를 처음부터 끝까지 설명해 보세요.
설명 예시 보기
설명 예시 XSLM(Extra Small Language Model)은 SONUB 에서 개발을 배우려고 처음부터 직접 만드는 아주 작은 입니다. 순서는 개발 환경 확인 → 폴더·settings.json·데이터 준비(prepare.py) → (tokenizer.py) → (engine.py·model.py) → 과 체크포인트(train.py) → 텍스트 생성(generate.py) → (runner.py) → 대화 화면 XChat(xchat.py) → 공개(export.py)입니다. 내가 학습한 를 저장하고 다시 읽어 XChat 에서 쓰면 완성입니다.
꼬리 질문 답이 엉뚱하게 나와도 XSLM 을 완성했다고 할 수 있는 까닭은 무엇인가요?
-
2
심사관 을 만드는 데 pip 설치···가 필요 없는 까닭을 설명해 보세요.
설명 예시 보기
설명 예시 /ai/build 의 은 에서 으로 도는 32bit 이고 3 이 이미 들어 있습니다. 는 Python 기본 만 쓰고 를 불러오지 않으므로 pip 설치가 필요 없습니다. 는 처음부터 직접 하고 외부 를 부르지 않으므로 API 키도 필요 없습니다. 계산은 브라우저가 흉내 내는 에서 합니다.
꼬리 질문 같은 소스를 에서 돌리려면 무엇이 있으면 되나요?
-
3
심사관 프로젝트 폴더의 구조와 settings.json 에 담는 값을 설명해 보세요.
설명 예시 보기
설명 예시 모든 작업은 ~/xslm 에서 합니다. 에는 원본(raw.txt)···가, checkpoints 에는 된 (model.json)가 들어가고, 는 프로젝트 바로 아래에 둡니다. settings.json 에는 width( 크기)·(한 번에 볼 수 있는 토큰 수)·merges( 병합 횟수)·steps(학습 반복 수)·(한 번에 바꾸는 정도)·· 같은 값을 적습니다.
꼬리 질문 이어서 학습하는 중에 settings.json 을 바꾸면 어떻게 되나요?
-
4
심사관 (raw.txt)는 어떤 형식으로 쓰고, prepare.py 는 그 자료를 어떻게 다루는지 설명해 보세요.
설명 예시 보기
설명 예시 raw.txt 에는 한 줄에 "Q: … | A: …" 형식으로 질문·답 한 쌍을 씁니다. prepare.py 는 로 읽고 빈 줄과 중복을 지운 뒤, 서로 다른 줄이 다섯 개 이상이고 모두 형식에 맞는지 검사합니다. 그다음 다섯 줄마다 하나를 검증용으로 떼어 /train.txt 와 data/val.txt 로 저장합니다(기본 자료는 학습 12개, 검증 3개).
꼬리 질문 내 질문·답 한 쌍을 더하면 어떤 파일부터 다시 만들어야 하나요?
-
5
심사관 학습용과 검증용 자료를 나누는 까닭과, 으로 바꾸기 전에 질문·답 쌍 단위로 나누는 까닭을 설명해 보세요.
설명 예시 보기
설명 예시 는 에 쓰지 않은 글이라, 이 외운 것이 아니라 처음 보는 글도 맞히는지 확인하는 데 씁니다. 토큰으로 바꾼 뒤 아무 데서나 자르면 같은 예제가 양쪽에 들어갈 수 있어서, 질문·답 쌍 단위로 먼저 나눕니다. 그래야 이 정직한 값이 됩니다.
꼬리 질문 검증 자료를 학습에도 쓰면 검증 손실은 무엇을 알려 주지 못하나요?
토크나이저와 모델
-
6
심사관 가 왜 필요하고, 의 문자 기반 가 어휘를 어떻게 배우는지 설명해 보세요.
설명 예시 보기
설명 예시 은 글자가 아니라 숫자만 계산하므로, 토크나이저가 글 조각마다 번호를 붙입니다. 문자 기반 BPE 는 한 글자씩 시작해, 붙어 있는 두 조각 가운데 가장 자주 나온 쌍을 새 조각으로 합치는 일을 settings.json 의 merges 횟수만큼 되풀이합니다. 합친 순서가 규칙이 되어 /tokenizer.json 에 저장됩니다.
꼬리 질문 merges 를 늘리면 같은 글의 수와 어휘 수는 어떻게 바뀌나요?
-
7
심사관 encode·decode 가 무엇이고, roundtrip: OK 가 무엇을 확인하는지, 처음 보는 글자는 어떻게 되는지 설명해 보세요.
설명 예시 보기
설명 예시 encode 는 글을 한 글자씩 번호로 바꾼 뒤 배운 병합 규칙을 같은 순서로 적용해 번호 목록을 만들고, decode 는 번호를 조각으로 바꿔 이어 붙입니다. roundtrip: OK 는 전체를 번호로 바꿨다가 원문 그대로 되돌렸다는 뜻입니다. 처음 보는 글자는 새로 배우지 않고 0번 조각인 � 로 바뀝니다.
꼬리 질문 를 다시 했다면 이미 학습한 를 왜 그대로 쓸 수 없나요?
-
8
심사관 과 가 무엇이고, 왜 둘을 더하는지 설명해 보세요.
설명 예시 보기
설명 예시 임베딩은 로 숫자 (길이 width)를 찾는 표입니다. 같은 이라도 몇 번째 자리에 있는지 알아야 하므로, 자리마다 따로 배우는 위치 벡터를 더합니다. 두 표 모두 처음에는 무작위 값이고 하면서 바뀝니다.
꼬리 질문 위치 벡터 표의 행 수가 와 같은 까닭은 무엇인가요?
-
9
심사관 의 Query·Key·Value 와 인과(causal) 마스크를 설명해 보세요.
설명 예시 보기
설명 예시 Query 는 지금 자리가 찾는 정보, Key 는 각 앞자리의 특징, Value 는 가져올 정보입니다. Query 와 Key 로 관련도를 구하고 로 로 바꾼 뒤 그 비율로 Value 를 섞습니다. 는 각 자리가 자기와 앞자리만 보게 해서, 다음 을 맞힐 때 정답을 미리 보지 못하게 합니다.
꼬리 질문 뒤에 토큰을 더해도 앞자리의 점수가 바뀌면 안 되는 까닭은 무엇인가요?
-
10
심사관 engine.py 의 Value 와 가 하는 일, 그리고 뒤의 층(·잔차 연결·)을 설명해 보세요.
설명 예시 보기
설명 예시 Value 는 숫자 하나와 그 숫자가 에 주는 영향(grad), 그리고 연산마다의 기록을 가집니다. backward 는 를 거꾸로 따라가며 를 더하므로, 같은 를 여러 번 쓴 영향도 합쳐집니다. MLP 는 를 두 배 너비로 넓혔다가 다시 줄이고, 잔차 연결은 층의 입력을 출력에 더해 정보를 잃지 않게 하며, 출력층(head)은 어휘마다 다음 점수를 냅니다.
꼬리 질문 의 수는 무엇으로 정해지고, 어떻게 세나요?
학습과 텍스트 생성
-
11
심사관 이 하는 목표와 을 설명해 보세요.
설명 예시 보기
설명 예시 다음 을 맞히는 것이 목표입니다. 토큰이 [a, b, c] 라면 입력 [a, b] 의 정답은 [b, c] 입니다. 교차 엔트로피 손실은 정답 토큰에 준 의 로, 정답에 높은 확률을 줄수록 작아집니다. 손실이 작다고 이 사실을 말한다는 보장은 아닙니다.
꼬리 질문 모든 토큰에 같은 확률을 주는 모델의 손실은 어휘 수와 어떤 관계가 있나요?
-
12
심사관 train.py 에서 학습 한 걸음(step)에 일어나는 일을 순서대로 설명해 보세요.
설명 예시 보기
설명 예시 에서 +1 개 구간을 무작위로 뽑고, 모든 의 grad 를 0 으로 비운 뒤, 을 계산하고 로 를 구합니다. 기울기 전체 크기가 1 을 넘으면 1 로 줄이고(clipping), 가중치에서 × 기울기만큼 뺍니다(). 그다음 체크포인트를 저장하고 step 과 loss 를 출력합니다.
꼬리 질문 grad 를 0 으로 비우지 않으면 어떤 일이 생기나요?
-
13
심사관 체크포인트에 무엇을 저장하고, 이어서 학습(resume)할 때 무엇을 확인하는지 설명해 보세요.
설명 예시 보기
설명 예시 checkpoints/model.json 에 설정··자료 ()··step·를 저장합니다. 에 먼저 쓴 뒤 로 바꾸므로 저장 도중 멈춰도 가 남습니다. 다시 실행하면 설정·토크나이저·자료가 그대로인지 확인해 다르면 일부러 거부하고, 같으면 이전 step 에서 이어 갑니다.
꼬리 질문 자료를 바꿨는데 이전 체크포인트에서 이어 하면 왜 위험한가요?
-
14
심사관 이 잘 되고 있는지 확인하는 방법 — 과 을 읽는 법 — 을 설명해 보세요.
설명 예시 보기
설명 예시 train.py 는 학습 전후에 손실을, 걸음마다 step 과 loss 를 출력합니다. 걸음마다 다른 구간을 뽑으므로 loss 는 오르내립니다. 한 번의 수치로 결론 내리지 않고 흐름과 학습 전후의 검증 손실을 비교합니다. 학습 손실만 내려가고 검증 손실이 오르면 을 의심합니다.
꼬리 질문 를 너무 크게 하면 손실은 어떻게 움직이나요?
-
15
심사관 generate.py 가 글을 만드는 과정과 ·· 의 역할을 설명해 보세요.
설명 예시 보기
설명 예시 체크포인트를 읽어 을 다시 만든 뒤, 최근 개 을 넣어 다음 토큰 점수를 구하고 하나를 뽑아 붙이는 일을 되풀이합니다. temperature 가 0 이면 가장 높은 점수를 고르고, 클수록 이 고르게 퍼집니다. top_k 는 상위 후보 k 개만 남기며 0 이면 전부 씁니다. ·질문·seed·설정이면 같은 글이 나옵니다.
꼬리 질문 무작위성을 높이면 덜 된 모델의 답이 좋아지나요?
Runner·XChat·공개
-
16
심사관 (runner.py)가 무엇이고 어떤 를 여는지, 확인하는 방법과 함께 설명해 보세요.
설명 예시 보기
설명 예시 Runner 는 체크포인트를 한 번 읽어 두고 요청을 받아 generate 를 부르는 수업용 입니다. (loopback)의 settings.json 에서 는 {"status": "ok"} 를, /generate 는 의 로 만든 text 를 돌려줍니다. 백그라운드로 띄우고 로 /health 와 /generate 를 불러 확인하고, 빈 JSON 같은 잘못된 요청에는 죽지 않고 400 을 돌려주는지 봅니다.
꼬리 질문 새로 학습한 뒤 Runner 를 다시 시작해야 하는 까닭은 무엇인가요?
-
17
심사관 XChat(xchat.py)이 하는 일과, XChat → → 로 이어지는 흐름을 설명해 보세요.
설명 예시 보기
설명 예시 XChat 은 대화 화면일 뿐 을 직접 불러오지 않습니다. 질문을 읽어 형식(Q: … A:)을 붙이고 Runner 의 /generate 에 로 보낸 뒤 받은 text 를 보여 줍니다. 글은 Runner 가 저장된 가중치로 만듭니다. Runner 가 꺼져 있으면 가짜 답 대신 연결 오류를 보여 줍니다.
꼬리 질문 XChat 이 질문에 "Q:" 와 "A:" 를 붙여 보내는 까닭은 무엇인가요?
-
18
심사관 완성한 을 에 공개하는 과정과 올리는 파일을 설명해 보세요.
설명 예시 보기
설명 예시 export.py 로 hub 폴더에 (model.safetensors)·설정(config.json)·(tokenizer.json)·실행 를 모으고, 다시 읽어 차이가 없는지 확인합니다. ()를 쓰고, Hugging Face 에 Public 를 만든 뒤 Write 으로 install → push 합니다. 다른 폴더에 git clone 해 python3 export.py --restore . 와 python3 generate.py 로 같은 답이 나오면 공개 완성입니다.
꼬리 질문 git push 가 files 때문에 거절되면 무엇을 빠뜨린 것인가요?
-
19
심사관 형식이 무엇이고, 에 무엇을 적는지 설명해 보세요.
설명 예시 보기
설명 예시 safetensors 는 앞에 머리(이름·모양·위치)를 두고 그 뒤에 숫자를 4바이트씩 이어 쓴 파일입니다. 실행 를 담지 않아 안전하게 읽을 수 있습니다. 모델 카드에는 이 무엇인지, 파일 목록, 실행 방법, , , 한계(학습용이라 답이 거의 무작위라는 점)를 적습니다.
꼬리 질문 다 올린 뒤 Access Token 은 어떻게 하겠습니까?
-
20
심사관 인터뷰에서 을 직접 완성할 때, 내가 한 이 실제로 답한다는 것을 어떻게 보여 주겠는지 설명해 보세요.
설명 예시 보기
설명 예시 prepare.py → tokenizer.py(roundtrip: OK) → engine.py 검사와 model.py 모양 검사 → train.py(·step··, checkpoints/model.json) → generate.py → runner.py(·/generate) → xchat.py 순서로 실행하며 출력을 하나씩 보여 줍니다. 마지막에 XChat 에서 질문해 답이 돌아오는 것을 보이고, 를 끄면 연결 오류가 나고 다시 켜면 대화가 돌아오는 것까지 보여 주면 답이 정해 둔 문장이 아니라 에서 나온다는 것이 드러납니다.
꼬리 질문 답이 엉뚱하게 나온다면 무엇부터 확인하겠습니까?