firststep.kr
4주차 마일스톤약 9시간 소요난이도: 중급

온디바이스 텍스트 & 임베딩 모델 인퍼런스 최적화

MobileBERT 및 경량 임베딩 모델 포팅, Hugging Face 토크나이저 연동 및 코사인 유사도 벡터 연산

#NLP#Embedding#Tokenizer#CosineSimilarity

이번 주 핵심 학습 목표

  • 1
    자연어 처리의 핵심인 토크나이저(BPE/WordPiece)의 Kotlin 네이티브 구현 원리를 이해한다.
  • 2
    텍스트를 고차원 밀집 벡터(Dense Vector)로 변환하는 온디바이스 인퍼런스를 수행한다.
  • 3
    두 문장 간의 코사인 유사도를 로컬에서 수 밀리초(ms) 이내에 연산한다.

실전 학습 가이드 & 코드 워크스루

1. 온디바이스 텍스트 인퍼런스 파이프라인

텍스트 모델은 문자열을 바로 입력받을 수 없습니다. 다음 4단계 파이프라인이 로컬에서 끊김 없이 동작해야 합니다:

text
Raw Text ("안녕하세요") ➔ Tokenizer ➔ Input IDs [101, 7520, 2341, 102] ➔ Model Inference ➔ Pooling & L2 Normalization ➔ 384차원 Embedding Vector

2. 코사인 유사도 고속 연산 (Kotlin Vector Math)

두 벡터 \vec{A}와 \vec{B}의 유사도는 다음과 같이 계산됩니다:

$\text{Cosine Similarity} = \frac{\vec{A} \cdot \vec{B}}{\|\vec{A}\| \|\vec{B}\|}$

kotlin
fun cosineSimilarity(v1: FloatArray, v2: FloatArray): Float {
    require(v1.size == v2.size) { "벡터 차원이 일치해야 합니다." }
    var dotProduct = 0.0f
    var normA = 0.0f
    var normB = 0.0f
    for (i in v1.indices) {
        dotProduct += v1[i] * v2[i]
        normA += v1[i] * v1[i]
        normB += v2[i] * v2[i]
    }
    val denominator = (Math.sqrt(normA.toDouble()) * Math.sqrt(normB.toDouble())).toFloat()
    return if (denominator > 0.0f) dotProduct / denominator else 0.0f
}

📂 이번 주차 학습 자료 & 실습 파일 다운로드

2개 파일 제공

강의 교안 PDF, 실습 스타터 코드, 치트시트 등 학습에 필요한 자료를 별도로 열람하거나 다운로드하여 학습하세요.

4주차_핵심요약_치트시트.pdf

PDF•1.8 MB

4주차 핵심 이론 및 아키텍처 다이어그램 치트시트

4주차_실전_스타터코드.zip

ZIP•3.4 MB

Android Studio 프로젝트 템플릿 및 실습 코드 예제

실전 체크리스트 & 셀프 점검

0 / 4 완료

직접 코드를 구현하고 테스트를 완료할 때마다 체크해 보세요. 브라우저에 자동 보관됩니다.

vocab.txt 파싱 및 WordPiece 토크나이저 구현
입력 텍스트를 input_ids, attention_mask 텐서로 변환
임베딩 모델 추론 실행 및 L2 정규화(Normalization) 함수 작성
코사인 유사도(Cosine Similarity) 계산 유틸리티 구현
ADVERTISEMENTfirststep.kr ad
1st

firststep.kr 12주 완성 실전 커리어 로드맵

파이썬, 소프트웨어설계, DB, 데이터과학, 딥러닝, LLM 9종 코스 100% 무료

로드맵 둘러보기