현업 엔지니어 관점에서 **"취업과 실무를 위해 머리에 박아둬야 할 것"**과 **"검색해서 갖다 써도 되는 것"**을 냉정하게 구분해 드립니다.
모든 코드를 달달 외울 필요는 없습니다. 시니어 개발자도 구글링하고 GPT 씁니다. 하지만 면접관이 "이거 화이트보드에 짜보세요"라고 했을 때 손이 멈추면 안 되는 부분은 분명히 있습니다.
1. 직접 짤 줄 알아야 하는 것 (Logic & Customization)
**"데이터가 바뀔 때마다 내가 직접 수정해야 하는 곳"**입니다. 여긴 못 짜면 일이 안 됩니다.
- Custom Dataset 클래스 (__getitem__ 로직):
- 이유: 회사마다 데이터 저장 방식(폴더 구조, CSV, DB 등)이 다 다릅니다. 파일 경로를 읽어서 이미지를 텐서로 바꾸는 로직은 무조건 직접 짤 줄 알아야 합니다.
- 핵심: "CSV에서 파일명을 읽고 -> 경로를 합치고 -> 이미지를 열어서 -> 리사이징하고 -> 텐서로 내보낸다" 이 흐름.
- Model Input/Output (Head 교체):
- 이유: 아까 우리가 src/model.py에서 했던 in_features를 찾아서 Linear 레이어를 갈아 끼우는 작업입니다.
- 핵심: 모델의 들어가는 구멍(Input Shape)과 나오는 구멍(Output Class 개수)을 맞추는 능력. 이걸 못하면 Shape Mismatch 에러로 며칠 밤을 샙니다.
2. 흐름을 외워야 하는 것 (The Training Standard)
토씨 하나 안 틀리고 외우는 게 아니라, **"순서(Algorithm)"**를 몸이 기억해야 합니다. 이건 10년 뒤에도 안 변합니다.
- 학습 루프의 5단계 (성경처럼 외우세요):
- optimizer.zero_grad() : 이전 기울기 초기화 (안 하면 기울기가 누적돼서 엉망 됨)
- outputs = model(inputs) : 모델 추론 (Forward)
- loss = criterion(outputs, labels) : 오차 계산
- loss.backward() : 역전파 (기울기 계산)
- optimizer.step() : 가중치 업데이트
- 면접 질문: "Optimizer.step()을 zero_grad()보다 먼저 쓰면 어떻게 됩니까?" 같은 질문에 답하려면 이 순서를 알아야 합니다.
3. 복붙해도 되는 것 (Boilerplate)
이건 외우는 게 미련한 짓입니다. 필요할 때 가져다 쓰거나, 스니펫(Snippet)으로 저장해두세요.
- 시각화 코드 (Matplotlib/Seaborn): 그래프 그리는 옵션(plt.figure, sns.barplot)은 그때그때 검색해서 예쁜 거 쓰면 됩니다.
- 시드 고정 (Seed Everything): torch.manual_seed(), np.random.seed() 등등... 이건 그냥 함수 하나 만들어두고 평생 복붙해서 씁니다.
- AverageMeter 클래스: 학습 중 Loss나 Accuracy 평균 계산하는 유틸리티 클래스.
- Import 구문: IDE가 알아서 해주거나, 맨 위에 몰려있는 거 긁어오면 됩니다.
[AI 엔지니어 취업을 위한 핵심 역량: 차원(Shape) 추적]
신입과 경력의 가장 큰 차이는 **"눈으로 코드를 볼 때 텐서의 모양(Shape)이 머릿속에 그려지느냐"**입니다.
- 코드: output = model(images)
- 초보: "모델에 이미지 넣었네."
- 엔지니어: " (32, 3, 224, 224)가 들어가서 (32, 4)가 나왔겠군."
[연습 방법] 코드를 따라 칠 때, 주석으로 옆에다가 텐서의 크기(Shape)를 적는 습관을 들이세요. 이게 쌓이면 코드를 안 보고도 짤 수 있게 됩니다.
'AI 엔지니어준비' 카테고리의 다른 글
| 딥러닝의 종류 (0) | 2026.01.30 |
|---|---|
| The Training Standard (0) | 2026.01.30 |
| ONNX(Open Neural Network Exchange)🌐 (0) | 2026.01.30 |
| float16(FP16) vs bfloat16(BF16)🥊 (1) | 2026.01.30 |
| ONNX INT8 양자화 코드 분석하기 (0) | 2026.01.29 |