17P by xguru 7일전 | favorite | 댓글 1개
  • Jina AI는 2024년 4월에 웹페이지 URL을 LLM에 친화적인 마크다운으로 변환하는 API인 Jina Reader를 출시함
  • Jina Reader는 Chrome 브라우저로 웹페이지 소스를 가져와 Readability 패키지로 메인 콘텐츠를 추출하고, regex와 Turndown 라이브러리를 사용해 정리된 HTML을 마크다운으로 변환함
  • 하지만 Readability 필터가 잘못된 콘텐츠를 제거하거나 Turndown이 특정 HTML을 마크다운으로 변환하는데 어려움을 겪는 등 개선할 점이 있었음
  • 이에 Jina AI는 소형 언어 모델(SLM)을 사용해 HTML을 마크다운으로 end-to-end로 변환하는 방법을 고민하게 됨

Reader-LM의 특징

  • HTML을 마크다운으로 변환하는 작업은 LLM 일반 작업보다 창의적이거나 복잡하지 않고, 주로 입력에서 출력으로 선택적 복사(selective-copy)가 필요함
  • 따라서 더 적은 transformer block이 필요한 shallow한 모델 아키텍처가 가능함
  • 하지만 실제 HTML은 노이즈가 많고 토큰 길이가 길기 때문에, 256K 토큰까지 지원하는 긴 문맥(long-context) 지원이 필요함
  • Jina AI는 이를 위해 "shallow-but-wide"한 SLM인 reader-lm-0.5b와 reader-lm-1.5b를 발표함. 이들은 494M, 1.54B 개의 파라미터를 가지고 있음

Reader-LM 사용 방법

  • Google Colab에서 reader-lm을 체험해볼 수 있음. Hacker News 웹사이트를 마크다운으로 변환하는 과정을 보여주는 노트북이 제공됨
  • 상용 환경에서는 고성능 GPU를 사용하는 것이 권장됨. T4보다는 RTX 3090/4090 수준이 적합함
  • Reader-LM은 곧 Azure Marketplace와 AWS SageMaker에서도 제공될 예정임
  • 상용 라이선스는 CC BY-NC 4.0이며, 상용 사용에 대해서는 Jina AI에 문의할 것

Reader-LM 벤치마크 결과

  • GPT-4o, Gemini, LLaMA 등 여러 LLM과 비교 평가를 진행함
  • ROUGE-L, Token Error Rate(TER), Word Error Rate(WER) 등의 메트릭을 사용함
  • reader-lm-1.5b가 ROUGE-L 0.72, WER 1.87로 가장 우수한 성능을 보임
  • 실제 출력 마크다운을 시각적으로 검사해보면, reader-lm-1.5b가 헤더 추출, 메인 콘텐츠 추출, 구조 보존, 마크다운 문법 사용 등 모든 측면에서 우수함

Reader-LM 학습 과정

  • Jina Reader API로 HTML과 마크다운 쌍을 만들어 학습 데이터로 사용함. 합성 HTML도 일부 추가함
  • 65M부터 3B 파라미터까지 다양한 크기의 모델을 실험함
  • 2단계 학습 과정을 거침. 1단계에서는 짧고 간단한 HTML을 32K 토큰 시퀀스로 학습하고, 2단계에서는 128K 토큰까지 확장해 학습함
  • 반복과 루프에 빠지는 퇴화(degeneration) 문제를 해결하기 위해 대조 탐색(contrastive search)과 반복 정지 기준을 적용함
  • OOM 문제를 해결하기 위해 chunk-wise model forwarding을 구현하고 데이터 패킹 구현을 개선함
  • 인코더 전용 모델로 문제를 해결하는 것도 시도해봤으나, 토큰 분류 작업으로 취급하기에는 어려움이 있었음

결론

  • Reader-LM은 웹 데이터 추출과 정제를 위해 설계된 새로운 SLM임
  • HTML을 마크다운으로 변환하는 작업은 생각보다 쉽지 않음. position-aware하고 context 기반 추론이 필요하기 때문에 큰 파라미터 크기가 요구됨
  • SLM을 처음부터 학습시키는 것은 매우 어려운 일임. 사전학습된 모델에서 시작하는 것이 훨씬 효율적임
  • 앞으로 문맥 길이 확장, 디코딩 속도 향상, 입력에서의 명령어 지원 등 개선의 여지가 많이 남아있음

Jina AI Reader - URL을 LLM 친화적인 입력으로 바꿔주는 도구

이거 잘 쓰고 있는데, 더 작게 만들어서 브라우저에 내장해주면 좋겠다는 생각이 드는군요 ㅎ