map() 이 일꾼인 이유
ds.map(fn) 이 함수를 row-by-row (또는 batch-by-batch) 로 적용, 새 데이터셋 돌려줌. Pandas .apply() 처럼 보이는데 두 결정적 차이: cached (함수 source 기반으로 디스크에 결과 memoize) + multi-process (num_proc=N).
Batched + unbatched
디폴트는 row 별. 토크나이즈, NLP 전처리, 무거운 op 대부분에 batched=True 가 극적으로 빠름 — 함수가 컬럼 리스트 dict 받고 같은 모양 돌려줌. 라이브러리가 batch 자동 split.
remove_columns gotcha
map 함수가 새 컬럼 추가하면 (전형적: text 컬럼을 input_ids + attention_mask 로 토크나이즈), remove_columns=['text'] 셋 안 하면 원본 컬럼 남아. Trainer 가 추가 string 컬럼 안 받아서 “trainer 깨짐” 티켓의 가장 흔한 원인.