다양한 유용한 작업을 위해 생산 준비가 완료된 소규모(7B 이하) LLM입니다.
지원되는 작업: 의역하기, 구절의 어조 바꾸기, 대화에서 요약 및 주제 생성, 검색 증강QA(WIP) .
우리는 양자화된 3B 및 7B 모델에서 LoRA를 미세 조정합니다. 3B 모델은 특정 작업에 대해 미세 조정되는 반면, 7B 모델은 모든 작업에 대해 미세 조정됩니다.
목표는 매우 평범한 소비자급 하드웨어에서 이러한 모든 모델을 미세 조정하고 사용할 수 있는 것입니다.
pip install llm-toys
CUDA 지원 GPU 없이는 작동하지 않을 수 있습니다.
bitandbytes와 함께 "설치된 버전의 bitandbytes가 GPU 지원 없이 컴파일되었습니다."라는 메시지가 나타나면 여기에서 bitandbytes-foundation/bitsandbytes#112를 확인하세요.
아니면 시도해 보세요
cp <경로_귀하의_venv>/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cpu.so <경로_귀하의_venv>/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cuda117.so
설치된 패키지가 아닌 소스 디렉터리의 Transformers 및 peft 패키지를 사용하고 있습니다. 4비트 비트앤바이트 양자화는 트랜스포머와 PEFT의 주요 부분에서만 작동했습니다. Transformers 버전 4.31.0 및 peft 버전 0.4.0이 pypi에 게시되면 게시된 버전을 사용합니다.
모델 | 크기 | 작업 | 코랩 |
---|---|---|---|
llm-toys/RedPajama-INCITE-Base-3B-v1-paraphrase-tone | 3B | 의역, 톤 변경 | 공책 |
llm-toys/RedPajama-INCITE-Base-3B-v1-dialogue-summary-topic | 3B | 대화 요약 및 주제 생성 | 공책 |
llm-toys/falcon-7b-의역-톤-대화-요약-주제 | 7B | 의역, 어조 변경, 대화 요약 및 주제 생성 | 공책 |
from llm_toys . tasks import Paraphraser
paraphraser = Paraphraser ()
paraphraser . paraphrase ( "Hey, can yuo hepl me cancel my last order?" )
# "Could you kindly assist me in canceling my previous order?"
paraphraser . paraphrase ( "Hey, can yuo hepl me cancel my last order?" , tone = "casual" )
# "Hey, could you help me cancel my order?"
paraphraser . paraphrase ( "Hey, can yuo hepl me cancel my last order?" , tone = "professional" )
# "I would appreciate guidance on canceling my previous order."
paraphraser . paraphrase ( "Hey, can yuo hepl me cancel my last order?" , tone = "witty" )
# "Hey, I need your help with my last order. Can you wave your magic wand and make it disappear?"
from llm_toys . tasks import SummaryAndTopicGenerator
summary_topic_generator = SummaryAndTopicGenerator ()
summary_topic_generator . generate_summary_and_topic (
"""
#Person1#: I'm so excited for the premiere of the latest Studio Ghibli movie!
#Person2#: What's got you so hyped?
#Person1#: Studio Ghibli movies are pure magic! The animation, storytelling, everything is incredible.
#Person2#: Which movie is it?
#Person1#: It's called "Whisper of the Wind." It's about a girl on a magical journey to save her village.
#Person2#: Sounds amazing! I'm in for the premiere.
#Person1#: Great! We're in for a visual masterpiece and a heartfelt story.
#Person2#: Can't wait to be transported to their world.
#Person1#: It'll be an unforgettable experience, for sure!
""" . strip ()
)
# {"summary": "#Person1# is excited for the premiere of the latest Studio Ghibli movie.
# #Person1# thinks the animation, storytelling, and heartfelt story will be unforgettable.
# #Person2# is also excited for the premiere.",
# "topic": "Studio ghibli movie"}
from llm_toys . tasks import GeneralTaskAssitant
from llm_toys . config import TaskType
gta = GeneralTaskAssitant ()
gta . complete ( TaskType . PARAPHRASE_TONE , "Hey, can yuo hepl me cancel my last order?" )
# "Could you assist me in canceling my previous order?"
gta . complete ( TaskType . PARAPHRASE_TONE , "Hey, can yuo hepl me cancel my last order?" , tone = "casual" )
# "Hey, can you help me cancel my last order?"
gta . complete ( TaskType . PARAPHRASE_TONE , "Hey, can yuo hepl me cancel my last order?" , tone = "professional" )
# "I would appreciate if you could assist me in canceling my previous order."
gta . complete ( TaskType . PARAPHRASE_TONE , "Hey, can yuo hepl me cancel my last order?" , tone = "witty" )
# "Oops! Looks like I got a little carried away with my shopping spree. Can you help me cancel my last order?"
chat = """
#Person1#: I'm so excited for the premiere of the latest Studio Ghibli movie!
#Person2#: What's got you so hyped?
#Person1#: Studio Ghibli movies are pure magic! The animation, storytelling, everything is incredible.
#Person2#: Which movie is it?
#Person1#: It's called "Whisper of the Wind." It's about a girl on a magical journey to save her village.
#Person2#: Sounds amazing! I'm in for the premiere.
#Person1#: Great! We're in for a visual masterpiece and a heartfelt story.
#Person2#: Can't wait to be transported to their world.
#Person1#: It'll be an unforgettable experience, for sure!
""" . strip ()
gta . complete ( TaskType . DIALOGUE_SUMMARY_TOPIC , chat )
# {"summary": "#Person1# tells #Person2# about the upcoming Studio Ghibli movie.
# #Person1# thinks it's magical and #Person2#'s excited to watch it.",
# "topic": "Movie premiere"}
의역 및 어조 변경: 구절과 의역된 버전뿐만 아니라 캐주얼하고 전문적이며 재치 있는 다양한 어조의 구절이 포함되어 있습니다. 구절의 어조를 바꾸고 변경하기 위해 모델에 사용됩니다. 데이터는 gpt-35-turbo를 사용하여 생성되었습니다. 또한 quora 질문과 squad_2 데이터 세트에서 훈련 내용의 작은 샘플을 선택했습니다.
대화 요약 및 주제 생성: 대화와 요약 및 주제가 포함되어 있습니다. 훈련 데이터는 Dialogsum 데이터세트의 훈련 분할에서 나온 ~1,000개의 레코드입니다. 또한 개발 분할에서 나온 ~20개의 샘플도 포함되어 있습니다. 더 긴 요약과 주제가 포함된 데이터 포인트가 샘플링에서 우선순위를 가졌습니다. 일부(~30) 주제는 최종 학습 데이터에서 수동으로 편집되었습니다. 원래 주제라는 라벨이 붙은 단어는 단어일 뿐이고 설명이 충분하지 않기 때문입니다.
모든 옵션을 보려면
python llm_toys/train.py --help
의역 및 어조 변경 모델을 훈련하려면
python llm_toys/train.py
--task_type paraphrase_tone
--model_name meta-llama/Llama-2-7b
--max_length 128
--batch_size 8
--gradient_accumulation_steps 1
--learning_rate 1e-4
--num_train_epochs 3
--eval_ratio 0.05
WIP
평가는 Dialogsum 테스트 분할의 500개 레코드에 대해 수행됩니다.
# llm-toys/RedPajama-INCITE-Base-3B-v1-dialogue-summary-topic
{ "rouge1" : 0.453 , "rouge2" : 0.197 , "rougeL" : 0.365 , "topic_similarity" : 0.888 }
# llm-toys/falcon-7b-paraphrase-tone-dialogue-summary-topic
{ 'rouge1' : 0.448 , 'rouge2' : 0.195 , 'rougeL' : 0.359 , 'topic_similarity' : 0.886 }