base_model: unsloth/LFM2-1.2B
tags:
- text-generation-inference
- transformers
- unsloth
- lfm2
- multiple inference
license: apache-2.0
language:
- ko
datasets:
- RstoneCommand/Synapse-Dataset_v03
pipeline_tag: text-generation
Synapse-Model 1 model Card
- 개발자: RstoneCommand
- 라이선스: apache-2.0
저자: Synapse-Model Team
모델에 대한 정보
Synapse-Model 1 의 입력, 출력, 장단점 에 대한 설명입니다.
설명
Synapse-Model 1 은 Synapse-Model Team 에서 개발한 첫 경량화 모델입니다. Synapse-Model 1 모델은 텍스트를 입력 받고 다중추론 과정을 거쳐 텍스트 출력을 생성하는 텍스트 생성 모델입니다. Synapse-Model 은 LiquidAI 의 LFM2-1.2B 모델을 파인튜닝 하여 추론 기능을 추가하였으며, 다중추론 기능을 지원하여 여러 작업에서 탁월한 성능을 발휘하도록 제작 되었습니다. Synapse-Model 1 은 32,768 개의 컨텍스트 길이를 가졌으며(LFM2-1.2B 에 종속됨), 한국어가 집중적으로 학습되었습니다. Synapse-Model 1 은 1.2B 에 달하는 작은 크기의 매개변수를 가져 노트북, 데스크톱, 핸드폰과 같은 리소스가 제한되는 로컬 환경에서 구동이 가능합니다.
입력 및 출력
사용방법
이 다음은 모델을 빠르게 실행하는 방법에 대한 몇가지 코드예시 및 주의사항이 있습니다. 먼저, transformers 라이브러리를 최신 버전으로 업그레이드 또는 설치 해야 합니다.(LFM2 에 종속됨) pip install "transformers @ git+https://github.com/huggingface/transformers.git@main".
다음 Python 코드를 사용하여 Synapse-Model 1 이 텍스트를 생성하는 예시입니다.
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
# Load model and tokenizer
model_id = "RstoneCommand/Synapse-Model1-1.2B_16bit"
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="auto",
torch_dtype="bfloat16",
trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained(model_id)
# Text Generate Process
instruction_ = input("instruction: ")
input_ = input("input: ")
user_ = f"# instruction:\n{instruction_}\n\n# input:\n{input_}" # The model uses this input template to quickly process various learning data and responses. (Therefore, if you do not use this template for input, the performance of Synapse-Model and the instructions of the persona may decline.)
messages = [
{"role" : "system", "content" : ""}, # You can write a custom SystemPrompt here. However, it will not work properly (because SystemPrompt has not been learned).
{"role" : "user", "content" : user_}
]
input_ids = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
return_tensors="pt",
tokenize=True,
).to(model.device)
from transformers import TextStreamer
output = model.generate(
input_ids,
do_sample=True,
temperature=0.3,
min_p=0.15,
repetition_penalty=1.05,
max_new_tokens=4069,
streamer = TextStreamer(tokenizer, skip_prompt = True),
)
모델 데이터
모델 학습에 사용된 학습 데이터셋
훈련 데이터셋 Synapse-Model 은 다양한 데이터셋의 입력을 바탕으로 Synapse-Model Team 내부에서 Custom Response 을 작성했습니다. Synapse-Model 1 의 경우 4096개의 토큰으로 학습되었습니다. 학습데이터의 구성요소는 다음과 같습니다.
- HAERAE-HUB / HR-Instruct-Math-v0.1 의 instruction 에 일부를 사용(168)
- nlpai-lab / kullm-v2 의 instruction 및 input 에 일부를 사용(68)
- Bingsu / ko_alpaca_data 의 instruction 및 input 에 일부를 사용(10)
- 총합 / 246
다양한 데이터셋의 입력을 바탕으로 제작된 Custom Response 는 다양한 상황에서의 문제를 해결할 수 있게 되었습니다.
모델학습
모델을 파인튜닝한 과정에 관한 설명입니다.
학습환경
Unsolth 및 Google Colab 을 사용하여 총 학습에 약 4시간이 걸렸습니다.
모델사용 및 제한사항
모델의 사용을 위해 지켜야할 제한사항이 있습니다.
의도한 사용
다중 추론과정이 필요한 복잡한 계산
- 수학 문제 해결, 창의적인 시 또는 문장 생성, 이메일 및 대본 작성 등에 사용할 수 있습니다.
다중 추론을 이용한 대화형 챗봇 제작
- 고객 서비스 또는 비서, 대화형 애플리케이션, 대화형 인터페이스, 챗봇 애플리케이션 등에 사용할 수 있습니다.
텍스트 번역 및 생성
- 모델은 불안정하나
영어->한국어
또는한국어->영어
로 번역이 가능합니다. 이에 따라 한국어 와 영어를 번역하는데 사용될 수 있습니다.
- 모델은 불안정하나
제한된 사항
작업에 대한 지시부족
- Synapse-Model 은 작업에 대한 지시가 부족할 시 제대로된 작업을 수행할 수 없습니다. 따라서 지시에 대한 모든 요구를 대화에 담아 정확도를 높혀주십시오.
다양한 언어 처리 부족
- Synapse-Model 은 다양한 언어에 대한 데이터셋을 제작하지 못하여 모델은 한국어와 영어(일부) 만 사용가능합니다.
응답 정확성
- Synapse-Model 은 학습데이터를 기반으로 응답을 생성하므로 모델은 부적확하거나 오래된 정보를 기반으로 응답을 생성할 수 있습니다. (이를 해결하기 위해선 Rag 또는 Fine-Tuning 이 필요함)