--- language: - ko library_name: transformers --- # EAGLE: ETRI's Advanced-lightweight Generative Language Engine (과거에 eGPT로 불렸으며, 2024.11.14 에 이름을 변경하였습니다. 추후 릴리즈되는 모델의 prefix는 egpt- 대신 eagle-로 변경됩니다.) __본 모델은 사전학습만 수행된 모델이며, 별도의 Instruction Tuning 등이 적용되지 않은 기초 모델입니다. 챗봇 스타일의 입출력이 필요한 경우, 별도의 미세조정을 반드시 수행해야 합니다.__ ## 모델 정보 1.3B Decoder-only, Causal 언어모델. 수학, 정량 추론을 비롯한 STEM 분야에 특화된 소규모 언어모델을 지향합니다. 범용 언어모델의 역할을 목표로하지는 않기에, 통상의 이해 관련 범용 태스크 평가(e.g. hellaswag, sentineg 등)에는 낮은 성능이 나타날 수 있습니다. 학습 데이터 변경 및 학습 방법 수정, 개선으로 인해 본 모델은 비정기적으로 업데이트 될 수 있음을 미리 알려드립니다. Tokenizer는 LLaMa의 구성과 유사하게 byte-fallbacked BPE + digit 분리 구성을 가지나, BOS/EOS(e.g. ```,```) 토큰이 모두 EOS(``````)로 통일되어 있습니다. 토크나이저 설정에서 PAD 토큰은 별도로 지정되어 있지 않으나, Byte-level BPE의 특성상 `````` 심볼이 사용되지 않으므로, 미세조정 단계에서는 `````` 토큰을 PAD 토큰으로 지정하여 활용할 것을 권장합니다. EleutherAI/gptneox 아키텍쳐로 구성되어 있으며, A100 80GB PCIE * 8장에서 약 12주간 학습(4주씩 v1, v2, v3 지속 사전 학습; 약 500B tokens 학습)하여 획득된 사전학습 모델입니다. ## 통지사항/Acknowledgement * 이 모델은 2023년도 정부(과학기술정보통신부)의 재원으로 정보통신기획평가원의 지원을 받아 수행된 연구임 (RS-2023-00216011, 사람처럼 개념적으로 이해/추론이 가능한 복합인공지능 원천기술 연구) * This work was supported by Institute of Information & Communications Technology Planning & Evaluation(IITP) grant funded by the Korea government(MSIT) (RS-2023-00216011, Development of artificial complex intelligence for conceptually understanding and inferring like human) ## 제한적 모델 접근 및, 모델 접근 허가와 관련한 개인정보 수집 및 사용 안내/Information on Collection and Use of Personal Information for Gated Model Access __본 모델은 연구와 교육 목적으로만 사용__ 될 수 있으며, 현재 제한적 공개 상태로, 본 언어 모델의 다운로드에는 담당자 사전 승인이 필요합니다. 사전 승인과 관련된 문의사항은 별도의 메일(jhshin82 __at__ etri.re.kr)로 요청 부탁드립니다. 본 모델과 관련해 사회적, 법적 문제가 발생할 경우 모델의 사용을 제한하고, 배포를 철회할 수 있습니다. 이를 위해 모델 접근 허가에 사용된 이메일 주소를 다음과 같이 수집, 보유, 이용할 수 있습니다. ### 개인정보 수집동의/Concent to collection of Personal Information 본 모델의 사용과 관련, 배포/사용 제한/철회, 그 외 사용자의 이익에 관계된 라이선스 변경 시 이를 통지하기 위해, 아래와 같이 개인정보를 수집, 이용합니다. | 수집 목적 | 수집 항목 | 보유, 이용기간 | |----------------- | ------------------------------ | ---------------- | | 모델의 사용제한/철회 요청 목적| 이메일 주소, huggingface hub ID | 본 모델의 공개 기간 및 이용 목적 달성 시 | | 모델의 사용 라이선스 등 변경 안내| 이메일 주소, huggingface hub ID | 본 모델의 공개 기간 및 이용 목적 달성 시| 본 모델에 대한 접근 요청을 수행하고, 모델에 접근하시는 행위는 아래에 안내된 안내사항, 본 모델의 한계, 책임있는 AI 연구에 대한 정보, 개인정보 수집/이용에 동의하신 것으로 간주합니다. 사용자는 동의를 거부하실 권리가 있으며, 동의를 거부하실 경우 모델 사용이 제한되며, 이에 관련한 사용, 결과에 대한 책임은 사용자에게 있음을 알려드립니다. 사용 후 동의 철회, 개인정보 폐기에 대한 사항은 상기 안내된 메일 주소 또는 Community tab을 통해서 요청하실 수 있습니다. ## 모델의 한계, 책임있는 AI 연구를 위한 관련 정보 안내 본 모델의 개발과 관련한 개발자 및 조직은 책임있는 AI 연구를 준수하고자 노력하고 있으며, 이와 관련해 AI 연구에 사용되는 입출력 데이터 내 포함된 욕설, 음란, 정치적 내용 및 기타 거친 언어에 대한 처리를 수행하고자 노력하고 있습니다. 그럼에도 불구하고, 원시 웹 텍스트 데이터의 특성 상 이를 기반으로 해 학습된 본 생성 언어 모델은 경도된 사상을 포함하거나, 사회적으로 용인될 수 없는 텍스트를 생성할 수 있으며, 다른 언어 모델과 마찬가지로 특정 프롬프트와 공격적인 콘텐츠가 반환될 수 있습니다. 이를 포함, 본 모델의 출력/생성 결과와 관련한 내용은 개발자 및 개발자가 속한 조직의 사상, 의도와 전혀 관련이 없음을 알려드립니다. 테스트중에 발생한 비정상적인 혹은 사회적으로 용인되지 않는 텍스트가 생성된 경우 jhshin82 __at__ etri.re.kr로 (__at__을 @로 치환) 출력 유도에 사용된 입력문(프롬프트), 사용된 샘플링 기법 및 하이퍼파라미터(예: top-p=0.8, temperature, repetition-penalty 등), 이를 통해 생성된 출력 결과를 함께 보내주시면, 이를 억제하기 위한 노력을 기울이도록 하겠습니다. ## 평가/Evaluations ### 사전학습 모델의 KOBEST 평가 평가는 EleutherAI/lm-evaluation-harness, __polyglot branch__ 를 사용하여, KoBEST(Kim et al., 2022) 평가셋으로 fine-tuning 없이 zero-shot, 5-shot 테스트를 수행했습니다. (lm-evaluation-harness의 KOBEST 평가는 버전에 따라 다르게 나타는 문제가 있어, 최신 lm-evaluation-harness(버전 0.4.2 이후)를 통한 평가를 아래 별도로 제시하였습니다.) |Zero-shot 성능 | KB-BOOLQ (F1) | KB-COPA (F1) | KB-HELLASWAG (F1) | KB-SENTINEG (F1) | KB-WIC (F1) | |--------------|---------------|--------------|-------------------|------------------|-------------| |Polyglot-ko-1.3b | 0.3552±0.0087 | **0.7196±0.0142** | 0.4013±0.0217 | **0.6790±0.0239** | 0.3276±0.0064 | |egpt-1.3b (23/07) | **0.4903±0.0134** | 0.6612±0.0149 | 0.3925±0.0217 | 0.3383±0.0112 | 0.3280±0.0063 | |egpt-1.3b (23/11) | 0.3969±0.0112 | 0.6470±0.0151 | 0.3746±0.0214 | 0.3350±0.0111 | **0.3297±0.0066** | |egpt-1.3b (24/03) | 0.4034±0.0118 | 0.6438±0.0152 | **0.4150±0.0218** | 0.5272±0.0255 | 0.3294±0.0066 | | 5-shot 성능 | KB-BOOLQ (F1) | KB-COPA (F1) | KB-HELLASWAG (F1) | KB-SENTINEG (F1) | KB-WIC (F1) | |------------|---------------|--------------|-------------------|------------------|-------------| |Polyglot-ko-1.3b | 0.4751±0.0133 | **0.7193±0.0142** | **0.3984±0.0218** | **0.6257±0.0244** | 0.4559±0.0138 | |egpt-1.3b (23/07) | 0.4829±0.0133 | 0.6558±0.0150 | 0.3846±0.0216 | 0.5715±0.0249 | **0.5108±0.0141** | |egpt-1.3b (23/11) | 0.4762±0.0133 | 0.6499±0.0151 | 0.3689±0.0214 | 0.5607±0.0249 | 0.4776±0.0141 | |egpt-1.3b (24/03) | **0.4944±0.0134** | 0.6643±0.0149 | 0.3862±0.0216 | 0.5232±0.0251 | 0.4947±0.0141 | LM-Evaluation-Harness 0.4.2 버전 이상(이하 LEH 0.4.2dev, commit id b1777c82) 으로 평가 시, KB-SENTINEG는 더 낮은 점수를, 나머지 4개 평가 항목은 더 높은 점수로 나타납니다. polyglot branch의 평가 오류가 수정된 것으로 보여 최신 버전을 통해 평가하는 것이 좋을 것으로 판단되나, 평가 일관성을 위해 polyglot branch의 평가 점수를 별도로 유지하였습니다. |Zero-shot 성능 | KB-BOOLQ (F1) | KB-COPA (F1) | KB-HELLASWAG (F1) | KB-SENTINEG (F1) | KB-WIC (F1) | |--------------|---------------|--------------|-------------------|------------------|-------------| |egpt-1.3b (23/11) - LEH v0.4.2dev 평가 | **0.4926** | **0.6530** | 0.3933 | 0.3350 | 0.3280 | |egpt-1.3b (24/03) - LEH v0.4.2dev 평가 | 0.4391 | 0.6497 | **0.4222** | **0.3733** | **0.3412** | |egpt-1.3b (24/03) - LEH polyglot branch 평가(참고) | 0.4034 | 0.6438 | 0.4150 | 0.5272 | 0.3294 | ### 전이학습 능력 평가 MetaMathQA를 통한 영어 GSM8k 평가 점수는 다음과 같습니다. 학습 환경: LR 8e-5, FP16, TF32 사용, 유효 배치 크기를 동일하게 128로 설정 (예: GPU=4 * batch size=GPU 당 8 * Gradient Accumulation=4). LR Scheduler는 Cosine Decaying, Warmup ratio 0.03. no weight decay. | 모델 | GSM8k test | 비고 | | ---- | ---------- | ---- | | polyglot-ko-1.3b | 0.2160 | | | polyglot-ko-12.8b | 0.3646 | LR을 5e-5로 세팅, Beomi/polyglot-ko-alpaca-12.8b의 hparam을 보고 LR을 결정함 | | egpt-1.3b (23/11) | 0.4443 | | | egpt-1.3b (24/03) | 0.4147 | | ## 업데이트 기록/Update log * (23/7/27 모델) 초기 모델. Polyglot 1.3b 대비 BOOLQ/WIC에서 더 나은 성능, 그리고 COPA/HELLASWAG/SENTINEG에서 열세. * (23/11/22 모델) 유사한 데이터 구성, 일부 데이터 추가하여 23/7/27 모델로 부터 추가 사전학습한 것. 지정 목표를 위한 다른 평가 체계에서 더 나은 성능(39 vs 44)을 보여 업데이트 함 * (24/03/21 모델) AIHUB 데이터셋, 한국어 위키 데이터셋을 사용해 추가 사전학습 ## 사전학습에 참여한 데이터셋 정보/Datasets 아래의 학습 데이터를 사용하여 학습하였습니다: * [AIHub 데이터셋, MRC, RAW, 대화, 번역, 요약](https://aihub.or.kr) * [KISTI 국내논문 EN, KR 데이터셋](https://aida.kisti.re.kr/) * [KcBERT v2022.3q 네이버 뉴스 댓글 데이터셋](https://huggingface.co/beomi/kcbert-base) * [국립국어원 모두의 말뭉치(문어, 구어, 신문, 비출판물, 국회회의록, 일상대화, 온라인대화, 메신저 말뭉치)](https://kli.korean.go.kr/) * [한국어 위키피디어 덤프, lovit/ko-wikitext 데이터셋. 20200920.v3 등 korpora 데이터셋의 사전학습용 말뭉치 일부](https://ko-nlp.github.io/Korpora/) * (영) stack exchange 데이터셋 * (영) OpenWebText2 * ~~(영) books3 corpus~~ (라이선스 문제로 2024/03에서 제거됨. removed on v3(2024/03) due to licensing issues) * (영) 2020-09-08-arXiv-extracts * (영) PUBMED title abstracts 2019 * THUDM/MathGLM Arithmetic Text Corpus (applied from 23/11/22, https://github.com/THUDM/MathGLM) ## 사용 요령/How to use 아래 코드를 통해, transformers>=4.28 버전에서 추론 가능합니다. ``` import sys from transformers import ( AutoTokenizer, AutoModelForCausalLM, GenerationConfig ) def load_model(mdl_path): tokenizer = AutoTokenizer.from_pretrained(mdl_path, use_fast=True, legacy=False,) # device_map 인자를 사용하기 위해서는 accelerator 모듈 설치 필요. model = AutoModelForCausalLM.from_pretrained(mdl_path, device_map="auto", torch_dtype="auto") return tokenizer, model if __name__ == '__main__': # FIXME: 모델 경로 수정! tokenizer, model = load_model("../egpt-1.3b-test-230720/") # print(model.hf_device_map) # 필요에 따라 아래 생성 옵션을 제어 gen_cfg = GenerationConfig(max_new_tokens=256, min_length=0, max_time=10.0, do_sample=True, top_p=0.9, epsilon_cutoff=3e-4,) print("** Now Ready to input from stdin.") for aline in sys.stdin: aline = aline.rstrip("\n\r\t") input_cond = tokenizer(aline, add_special_tokens=False, return_tensors="pt").to("cuda") outs = model.generate(**input_cond, generation_config=gen_cfg) out_str = tokenizer.batch_decode(outs, skip_special_tokens=True, clean_up_tokenization_spaces=True) print(">> " + ' '.join(out_str)) ```