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-0.5b
와 reader-lm-1.5b
의 두가지 모델은 HTML에서 마크다운으로 변환하기 위해 특수 학습되어 Readability나 Turndown 같은 외부 패키지 없이도 이 작업을 완전하게 수행할 수 있습니다. 이 모델들은 최대 256K 토큰의 긴 컨텍스트를 지원하며, 다국어도 처리할 수 있어 기존의 규칙 기반 시스템이나 전통적인 LLM과 비교했을 때 매우 효율적입니다.
이 모델들은 크기는 작지만, HTML에서 마크다운으로 변환하는 작업에서 최첨단 성능을 보여줍니다. 더 큰 모델들보다 성능이 우수하면서도, 리소스 소모가 훨씬 적고, 비용도 절감됩니다. 이는 엣지 장치나 비용과 속도가 중요한 환경에서 모델을 배포할 때 특히 중요합니다. 여러 언어로 된 콘텐츠를 깨끗하게 변환하는 능력 덕분에 다양한 실사용 사례에 적용할 수 있는 잠재력이 큽니다.
Jina AI는 이러한 모델을 쉽게 통합하고 사용할 수 있도록 설계했습니다. HuggingFace 저장소에서 쉽게 접근할 수 있으며, 클라우드 서비스인 Azure와 AWS에서도 구현할 수 있도록 준비 중입니다. 이러한 접근성 덕분에 개발자들은 기존의 워크플로우에서 이 모델을 직접 실험해볼 수 있으며, 웹 데이터 추출, 요약, 텍스트 변환과 같은 다양한 작업에 효율적으로 활용할 수 있습니다.
Reader-LM의 주요 특징
-
작은 파라미터 모델: 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 라이선스로 배포되고 있으며, 상업적 사용을 위해서는 별도의 문의가 필요합니다.
Reader-LM 소개 글
Reader-LM 모델 가중치
Reader-LM-0.5B
Reader-LM-1.5B
활용 예시 - Google Colab 노트북
더 읽어보기
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래쪽에 좋아요를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~