목록 보기
TensorFlow Custom Op으로 데이터 변환 최적화하기
AI

TensorFlow Custom Op으로 데이터 변환 최적화하기

스캐터랩 핑퐁
스캐터랩 핑퐁
2021년 1월 6일

두줄요약

TensorFlow 기반 N-gram 마스킹 위치 계산 병목을 C++ Custom Op으로 교체했습니다. 문장당 처리 시간을 4.697ms에서 17.147μs로 줄이며 약 250배 성능을 개선했습니다.

문제 상황

  • 대규모 코퍼스의 TFRecord 변환 과정에서 N-gram 마스킹 위치 계산이 전체 시간의 절반 이상 차지
  • TPU 기반 언어 모델 학습용 BERT 입력, 마스킹 위치, NSP·SOP 레이블 생성 요구

구조와 흐름

  • TensorFlow while_loop와 random.shuffle 기반 마스킹 후보 생성·셔플 방식
  • C++ REGISTER_OP, OpKernel, REGISTER_KERNEL_BUILDER로 CPU Custom Op 구현
  • g++로 Shared Object 컴파일 후 tf.load_op_library로 Python 코드에서 로딩

성능/운영 포인트

  • 문장당 처리 시간 4.697ms에서 17.147μs로 감소
  • 동일 기능 기준 약 250배 빠른 마스킹 위치 계산

주의할 점

  • Bazel 미사용 환경의 유지보수 난이도
  • Op 이해, 디버깅, 구현 복잡도 증가
  • 병목이 명확하고 기존 Op 표현이 비효율적인 구간에 한정한 적용

다음 읽기

#TensorFlow 주제를 이어서 읽기

하나의 조직에서 TensorFlow와 PyTorch 동시 활용하기

PyTorch 리서치와 TensorFlow Serving 배포를 병행한 모델 운영 방식을 소개했습니다. 양방향 가중치 변환과 결과 비교 테스트, 레이어별 차이 대응 방법을 정리했습니다.

스캐터랩 핑퐁
스캐터랩 핑퐁
AI

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...