Java에서 Transformers Token 길이 계산하기

KHS·2023년 7월 22일
0
post-thumbnail

해당 글은 Transformers 기반의 Tokenizer를 Java에서 구현하는 방법을 소개한다.

참조 사이트
HuggingFace Transformers(Python)
@xenova/transformers(Javascript)
NLP support with Huggingface tokenizers(Java)
DJL NLP Utilities For Huggingface Tokenizers Maven

  • 해당 글에선 Gradle 환경 기준으로 진행함

의존성 추가

// build.gradle의 Dependencies에 추가
implementation "ai.djl.huggingface:tokenizers:0.23.0"

Tokenizer 파일 추가

  • src/resouces/ 경로 이하에 사용하고자 하는 Transformer 기반 tokenizer.json을 넣어둔다

Tokenizer Spring Bean 등록

  • @Configuration 클래스에 작성
@Bean
public HuggingFaceTokenizer huggingFaceTokenizer() throws IOException {
  ClassPathResource tokenizerResource = new ClassPathResource(
    "docs/tokenizer/tokenizer.json"
  );

  HuggingFaceTokenizer tokenizer = HuggingFaceTokenizer.newInstance(
    tokenizerResource.getInputStream(),
    Map.of("modelMaxLength", "2048")
  );

  return tokenizer;
}

Token 길이 계산

int tokenLength = tokenizer
        .encode("안녕하세요")
        .getTokens()
        .length;

위 메소드 이외에도 다양한 기능이 제공된다.

컨테이너 및 리눅스 환경 의존성

  • DJL NLP Utilities For Huggingface Tokenizers 라이브러리는 libgcc1를 참조하므로 해당 라이브러리가 설치되어 있어야 한다.
# Ubuntu 기준
sudo apt install -y libgcc1
# Dockerfile
FROM ubuntu:20.04

RUN SILENT=1 apt update -qq && SILENT=1 apt install -qqy openjdk-17-jre-headless libgcc1
profile
Java & Vue ...

1개의 댓글

comment-user-thumbnail
2023년 7월 22일

유익한 글이었습니다.

답글 달기