Reader-LM: HTML을 Markdown으로 정리 및 변환하는 소규모 언어 모델(feat. Jina AI))

Reader-LM: HTML을 Markdown으로 정리 및 변환하는 소규모 언어 모델(feat. Jina AI))

Reader-LM 소개

Jina Reader는 URL을 입력하면 HTML을 Markdown으로 변환해주는 API입니다. 이 API는 크롬 브라우저와 Mozilla의 Readability 패키지를 사용해 웹페이지의 주요 콘텐츠를 추출하고, Turndown 라이브러리를 통해 Markdown으로 변환합니다. 그러나 기존 방식은 규칙 기반이어서 특정 콘텐츠가 잘못 필터링되거나, HTML 변환이 실패하는 경우가 많았습니다.

이 문제를 해결하고자 Jina AI는 규칙과 정규표현식을 대체할 수 있는 소규모 언어 모델(Small Language Model, SLM) Reader-LM을 개발했습니다. Reader-LM은 기존의 대형 언어 모델보다 훨씬 작고 효율적이며, 최대 256K 토큰의 긴 컨텍스트를 지원하여 HTML을 직접 Markdown으로 변환하는 기능을 수행합니다.

Reader-LM 모델 개요: 동작 설명

reader-lm-0.5breader-lm-1.5b의 두가지 모델은 HTML에서 마크다운으로 변환하기 위해 특수 학습되어 Readability나 Turndown 같은 외부 패키지 없이도 이 작업을 완전하게 수행할 수 있습니다. 이 모델들은 최대 256K 토큰의 긴 컨텍스트를 지원하며, 다국어도 처리할 수 있어 기존의 규칙 기반 시스템이나 전통적인 LLM과 비교했을 때 매우 효율적입니다.

이 모델들은 크기는 작지만, HTML에서 마크다운으로 변환하는 작업에서 최첨단 성능을 보여줍니다. 더 큰 모델들보다 성능이 우수하면서도, 리소스 소모가 훨씬 적고, 비용도 절감됩니다. 이는 엣지 장치나 비용과 속도가 중요한 환경에서 모델을 배포할 때 특히 중요합니다. 여러 언어로 된 콘텐츠를 깨끗하게 변환하는 능력 덕분에 다양한 실사용 사례에 적용할 수 있는 잠재력이 큽니다.

Reader-LM과 주요 LLM과의 HTML2Markdown 작업 성능 비교

Jina AI는 이러한 모델을 쉽게 통합하고 사용할 수 있도록 설계했습니다. HuggingFace 저장소에서 쉽게 접근할 수 있으며, 클라우드 서비스인 Azure와 AWS에서도 구현할 수 있도록 준비 중입니다. 이러한 접근성 덕분에 개발자들은 기존의 워크플로우에서 이 모델을 직접 실험해볼 수 있으며, 웹 데이터 추출, 요약, 텍스트 변환과 같은 다양한 작업에 효율적으로 활용할 수 있습니다.

Reader-LM의 주요 특징

Reader-LM과 몇몇 LLM, 그리고 Jina Reader API의 정성 비교

  • 작은 파라미터 모델: Reader-LM은 0.5B와 1.5B 모델로, 각각 494M, 1.54B 파라미터를 갖고 있어 작고 효율적입니다.

  • 긴 컨텍스트 처리: 최대 256K 토큰의 긴 컨텍스트를 지원해 복잡한 HTML을 처리할 수 있습니다.

  • 다국어 지원: 영어, 독일어, 일본어, 중국어 등 다국어를 지원합니다.

  • 높은 변환 정확도: ROUGE-L, WER, TER 등의 평가 지표에서 대형 모델들을 능가하는 성능을 보여줍니다.

Reader-LM을 사용해보고 싶다면 Google Colab에서 예제 노트북을 활용할 수 있습니다. Colab에서는 Reader-LM-1.5b 모델을 사용해 웹사이트를 Markdown으로 변환하는 과정을 직접 실습할 수 있습니다. 무료 T4 GPU에서도 원활하게 실행되며, 입력 HTML을 별도의 지시어 없이 모델에 바로 투입하면 됩니다.

reader-lm-65m reader-lm-135m reader-lm-360m reader-lm-0.5b reader-lm-1.5b reader-lm-1.7b reader-lm-3b
Hidden Size 512 576 960 896 1536 2048 3072
# Layers 8 30 32 24 28 24 32
# Query Heads 16 9 15 14 12 32 32
# KV Heads 8 3 5 2 2 32 32
Head Size 32 64 64 64 128 64 96
Intermediate Size 2048 1536 2560 4864 8960 8192 8192
Attention Bias False False False True True False False
Embedding Tying False True True True True True False
Vocabulary Size 32768 49152 49152 151646 151646 49152 32064
Base Model Lite-Oute-1-65M-Instruct SmolLM-135M SmolLM-360M-Instruct Qwen2-0.5B-Instruct Qwen2-1.5B-Instruct SmolLM-1.7B Phi-3-mini-128k-instruct

설치 및 실행 예시 코드

# Hugging Face에서 Reader-LM 모델 로드
from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("jinaai/reader-lm-1.5b")
model = AutoModelForCausalLM.from_pretrained("jinaai/reader-lm-1.5b")

# HTML을 Markdown으로 변환하는 함수
def convert_html_to_markdown(html_content):
    inputs = tokenizer(html_content, return_tensors="pt")
    outputs = model.generate(**inputs, max_length=256000)
    return tokenizer.decode(outputs[0], skip_special_tokens=True)

html = "<html>...your HTML content...</html>"
markdown = convert_html_to_markdown(html)
print(markdown)

라이선스

Reader-LM은 CC BY-NC 4.0 라이선스로 배포되고 있으며, 상업적 사용을 위해서는 별도의 문의가 필요합니다.

:scroll: Reader-LM 소개 글

:hugs: Reader-LM 모델 가중치

Reader-LM-0.5B

Reader-LM-1.5B

:notebook: 활용 예시 - Google Colab 노트북

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: