Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PyCon2020 NLP beginner's BERT challenge

1,126 views

Published on

1. BERT 모델 소개
2. BERT 모델을 활용한 KorQuAD 2.1 도전기
3. 2달 동안의 시행착오 - Hugginface Transformers, 한국어 인코딩 문제, 멀티프로세싱 최적화 등
4. 앞으로 계획 - 한국어 GPT-3 도전

Published in: Technology
  • Be the first to comment

PyCon2020 NLP beginner's BERT challenge

  1. 1. 자연어처리 초보자의 BERT 도전기 김윤기 Common Computer
  2. 2. 간단 소개 • 시각장애인을 위한 보행로 안내 AI
  3. 3. • 시각장애인을 위한 보행로 안내 AI AI Hub 인도보행 공개 데이터 구축 간단 소개 http://www.aihub.or.kr/aidata/136 https://github.com/YoongiKim/Walk-Assistant
  4. 4. • 음성, 텍스트  수화 번역 AI 간단 소개 (Example)
  5. 5. • 음성, 텍스트  수화 번역 AI https://link.ainize.ai/unet-lstm-based-speech-to-sign 간단 소개
  6. 6. • 지금은 대학생 (1학년) Common Computer에서 방학때부터 2달 째 인턴 중 그 동안 관심있었던 자연어처리 분야 도전! 간단 소개
  7. 7. • Bidirectional Encoder Representations from Transformers https://paul-hyun.github.io/bert-01/ BERT? http://jalammar.github.io/illustrated-bert/
  8. 8. • Word2Vec -> 맥락과 관계 없이 단어를 벡터화 예시) “Apple” -> [0.8, 0.1, 0.5, 0.3, …] -> RNN • BERT(Transformer) -> 문장의 맥락을 고려해서 문장을 통째로 벡터화 예시) “I ate an apple” -> [[0.3, 0.6, 0.1, …], [0.2, 0.5, 0.3, …], [0.3, 0.2, 0.9, …], [0.2, 0.5, 0.1, …]] https://medium.com/analytics-vidhya/implementing-word2vec-in-tensorflow-44f93cf2665f BERT 와 기존 방식과의 차이점
  9. 9. AI의 Next step → NLP • Computer Vision [정복] • Speech Recognition [정복] ↓ (Next step) • Natural Language Processing • Logical Thinking Google Trends
  10. 10. 대표적인 NLP Tasks • Language Modeling • Text Classification • Question Answering • Text Generation • Summarization • Translation --- 언어에 대한 이해, 검색어 추천 --- 감정 분석, 스팸 분류 --- 기계 독해, 지식 문답 --- 모든 종류의 글 작성 --- 개요 생성, 글 요약 --- 구글번역기, 파파고
  11. 11. Question Answering Task에 관심 • BERT로 할 만한 게 뭐가 있을까? • SQuAD2.0 이라는 질의응답 Task가 있음 https://colab.research.google.com/drive/1uSlWtJdZmLrI3FCNIlUHFxwAJiSu2J0-
  12. 12. KorQuAD를 해보자 "한국어를 해보고 싶은데 괜찮은 것이 없을까?" ( SQuAD는 영어 버전, KorQuAD는 한국어 버전 ) https://korquad.github.io/
  13. 13. KorQuAD! 근데 엄청 어렵다! 대기업들로 꽉 찬 리더보드… 처음 배우는 내가 과연 할 수 있을까? 그것도 혼자서? 일단 해보자!
  14. 14. BERT모델을 이용한 KorQuAD 2.1 도전기 • What is KorQuAD 2.1? • 한글 Wiki 백과에서 질문이 주어졌을 때 답변에 해당하는 부분(start, end)을 찾는 Task.
  15. 15. KorQuAD가 중요한 이유? • Pre-Trained + Fine-Tuning로 이루어지는데 • KorQuAD는 한국어로 잘 학습된 Pre-Trained 모델과 QuestionAnswering에 적합하게 Fine-Tuning이 필요. • KorQuAD에서 잘 작동하면 한국어에 대한 전반적인 Task 정확도가 높다는 것!
  16. 16. Why is Python So Good for Machine Learning? • 쓸 수 있는 라이브러리가 많다! • 생산성이 높고 이해하기 쉽다! • 다른 언어에 비해 코드가 훨씬 짧다! • 파이썬 500줄이면 C++/Java는 1000줄 이상 … https://medium.com/@UdacityINDIA/why-use-python-for-machine-learning-e4b0b4457a77
  17. 17. 도전 타임라인 • 2020년 6월 24일: Common Computer 인턴 시작 - NLP 분야, BERT 모델 공부, Bert-as-service Ainize • 2020년 7월 9일: KorQuad 프로젝트 시작 - Redis Database로 Pipeline 개발 + Multiprocessing 적용 → 10시간 걸리던 전처리를 3분으로 줄임! • 2020년 8월 7일: EM=8.959 / F1=18.88 - 한국어 Evaluation 유니코드 문제점 해결 • 2020년 8월 19일: EM=48.597 / F1=66.073 [14위 Baseline 넘김] • 2020년 8월 21일: EM=65.76 / F1=75.18 [11위] 이제부터 본격적인 시작! 아직 하는 중!!
  18. 18. 1. NLP 분야, BERT 모델 공부 • BERT 공부에 도움되었던 자료들 https://bit.ly/3b2ZYli
  19. 19. 2. Huggingface Transformers (실행 결과) • PyTorch + Tensorflow 2.0 환경으로 아주 간단하게 BERT 모델을 돌릴 수 있는 library
  20. 20. KorQuAD 2.0 데이터셋 (7GB .json.zip)
  21. 21. 3. SQuAD에 KorQuAD v2 데이터를 넣어보자! • Raw Text → Tokenized → Labeled Values → Model → (start, end) → Result • 영어의 경우 • Raw Text 1byte → Tokenized String 1byte • 한글의 경우 • Raw Text 2~4bytes → Tokenized String x3 bytes -> 한 문장을 처리하는데도 메모리 사용량이 급증
  22. 22. 4. Redis Database로 Pipeline 개발 • 기본 SQuAD 데이터셋은 40MB (v2) KorQuAD 데이터셋은 7GB (v2.1) • KorQuAD 데이터셋은 JSON으로, 한 파일 안에 1,000개의 질문과 답변 → 이걸 한번에 로딩해서 각 단계에서 필요한 정보를 가져오는 것은 매우 비효율적 • JSON Loads + Tokenize == 200GB+ 메모리 필요! • JSON → Redis Tokenized Result → Redis Label & Dictionary → Redis == 70GB Memory 달성!
  23. 23. + CPU 256개 멀티 프로세싱 전처리 과정에 걸리는 시간을 10시간→ 3분으로 단축
  24. 24. + Profiler로 최적화 대용량의 JSON/CSV를 Memory-efficient하게 읽어들이기 위해 Pandas 라이브러리를 썼으나, 비효율적임을 확인할 수 있었음
  25. 25. https://www.quora.com/What-are-the-fastest-ways-to-read-text-lines-in-large-files-by-Python https://nelsonslog.wordpress.com/2015/02/26/python-file-reading-benchmarks/ Before → After + Profiler로 최적화
  26. 26. 5. 한글 유니코드 차이로 인한 오작동 해결 • NFD(조합형), NFC(완성형) 차이로 인한 Evaluation 문제 파 이 콘 2 0 2 0 [PAD] [PAD] [PAD] ↕ ↕ ↕ ↕ ↕ ↕ ↕ ↕ ↕ ↕ ㅍ ㅏ ㅇ ㅣ ㅋ ㅗ ㄴ 2 0 2 정답 모델 출력 결과
  27. 27. 아직 NLP 시작한지 2달 밖에 안 지났지만… • 처음에 불가능해 보였던 목표에 어느정도 근접 • Research 보다는 Engineering 과정이 훨씬 많았음. • 사실상 2달 동안 전처리만 함… • Vision과는 비교도 안되게 복잡한 전처리… • 그래도 baseline은 넘겼음. 이제부터 본격적인 연구 가능할 듯!
  28. 28. 최근에 핫한 GPT-3 https://blog.pingpong.us/gpt3-review/
  29. 29. GPT-3 특징 • 모델의 크기를 키우면 General한 Task에 쓸 수 있다! https://mc.ai/gpt-3-the-new-mighty-language-model-from-openai-2/ https://www.zdnet.com/article/openais-gigantic-gpt-3-hints-at-the-limits-of-language-models-for-ai/
  30. 30. 한국어 GPT-3를 만들고 싶다! 영어만 학습이 가능해서, 한국어 → 영어 → 한국어로 번역해야 함.
  31. 31. 앞으로 계획 • KorQuAD 2.0 의미있는(1th?) 점수 찍기 • 한글 GPT 모델 만들어보기! • 잘 만들어서 Ainize API로 공개하기! 해보고 싶은 프로젝트? • 학교 과제 대신해주는 AI (개요 -> 에세이) • 문서 작성 자동화
  32. 32. 개인이 돌리기엔 모델이 너무 크다... 개인 GPU에서는 학습 조차 어려움… GPU 메모리 12기가는 되어야... (GTX-1080TI가 8기가인데?) https://www.neowin.net/news/nvidia-registers-the-worlds-quickest-bert-training-time-and-largest-transformer-based-model/
  33. 33. 로 Bert API 돌려보기 github.com/hanxiao/bert-as-service -> link.ainize.ai/bert-as-a-service
  34. 34. github.com/konlpy/konlpy -> link.ainize.ai/konlpy 로 KoNLPy API 돌려보기 OpenSource-as-a-Service Platform 무거운 모델, GPU가 필요한 코드까지 Ainize로 올려보세요! https://ainize.ai/
  35. 35. Common Computer에서 동료들과 함께 성장해 나갈 개발자를 찾습니다. 채용 문의 phillip@comcom.ai https://comcom.ai > Careers

×