開啟想象翅膀:輕松實現(xiàn)文本生成模型的創(chuàng)作應用,支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,開箱即用
TextGen: Implementation of Text Generation models
1.介紹
TextGen實現(xiàn)了多種文本生成模型,包括:LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,開箱即用。
1.1 最新更新
[2023/06/15] v1.0.0版本: 新增ChatGLM/LLaMA/Bloom模型的多輪對話微調訓練,并發(fā)布醫(yī)療問診LoRA模型shibing624/ziya-llama-13b-medical-lora。詳見Release-v1.0.0
[2023/06/02] v0.2.7版本: 新增ChatGLM/LLaMA/Bloom模型的SFT微調訓練,并發(fā)布適用于通用對話和中文糾錯的LoRA模型。詳見Release-v0.2.7
1.2 相關介紹
- ChatGLM:本項目基于PyTorch實現(xiàn)了ChatGLM-6B模型LoRA微調訓練和預測,可以用于句子糾錯、對話等文本生成任務
- LLaMA:本項目基于PyTorch實現(xiàn)了LLaMA模型LoRA微調訓練和預測,可以用于對話生成任務和領域微調訓練
- BLOOM:本項目基于PyTorch實現(xiàn)了BLOOM模型LoRA微調訓練和預測,可以用于對話生成任務和領域微調訓練
- UDA/EDA:本項目實現(xiàn)了UDA(非核心詞替換)、EDA和Back Translation(回譯)算法,基于TF-IDF將句子中部分不重要詞替換為同義詞,隨機詞插入、刪除、替換等方法,產生新的文本,實現(xiàn)了文本擴增
- Seq2Seq:本項目基于PyTorch實現(xiàn)了Seq2Seq、ConvSeq2Seq、BART模型的訓練和預測,可以用于文本翻譯、對話生成、摘要生成等文本生成任務
- T5:本項目基于PyTorch實現(xiàn)了T5和CopyT5模型訓練和預測,可以用于文本翻譯、對話生成、對聯(lián)生成、文案撰寫等文本生成任務
- GPT2:本項目基于PyTorch實現(xiàn)了GTP2模型訓練和預測,可以用于文章生成、對聯(lián)生成等文本生成任務
- SongNet:本項目基于PyTorch實現(xiàn)了SongNet模型訓練和預測,可以用于規(guī)范格式的詩詞、歌詞等文本生成任務
- TGLS:本項目實現(xiàn)了TGLS無監(jiān)督相似文本生成模型,是一種“先搜索后學習”的文本生成方法,通過反復迭代學習候選集,最終模型能生成類似候選集的高質量相似文本
1.2.1 支持模型
release基于textgen
訓練的中文模型,模型已經release到HuggingFace models,指定模型名稱textgen
會自動下載模型,可直接使用。
Model | Arch | Introduction | Train Script | Predict Script |
---|---|---|---|---|
shibing624/t5-chinese-couplet | T5 | fine-tuned中文對聯(lián)后的模型 | 對聯(lián)生成模型調研 | predict script |
shibing624/songnet-base-chinese-songci | SongNet | fine-tuned宋詞后的模型 | training script | predict script |
shibing624/songnet-base-chinese-couplet | SongNet | fine-tuned對聯(lián)后的模型 | training script | predict script |
shibing624/chatglm-6b-csc-zh-lora | ChatGLM-6B | 在27萬中文拼寫糾錯數(shù)據shibing624/CSC上微調了一版ChatGLM-6B,糾錯效果有提升,發(fā)布微調后的LoRA權重 | training script | predict script |
shibing624/chatglm-6b-belle-zh-lora | ChatGLM-6B | 在100萬條中文ChatGPT指令Belle數(shù)據集BelleGroup/train_1M_CN上微調了一版ChatGLM-6B,問答效果有提升,發(fā)布微調后的LoRA權重 | training script | predict script |
shibing624/llama-13b-belle-zh-lora | LLaMA-13B | 在100萬條中文ChatGPT指令Belle數(shù)據集BelleGroup/train_1M_CN上微調了一版Llama-13B,問答效果有提升,發(fā)布微調后的LoRA權重 | training script | predict script |
shibing624/chinese-alpaca-plus-7b-hf | LLaMA-7B | 中文LLaMA-Plus, Alpaca-Plus 7B版本,在LLaMA-7B上擴充了中文詞表并繼續(xù)預訓練120G文本(通用領域),在4M指令數(shù)據集上微調后得到的中文Alpaca-plus模型 | training script | predict script |
shibing624/chinese-alpaca-plus-13b-hf | LLaMA-13B | 中文LLaMA-Plus, Alpaca-Plus 13B版本,在LLaMA-13B上擴充了中文詞表并繼續(xù)預訓練120G文本(通用領域),在4.3M指令數(shù)據集上微調后得到的中文Alpaca-plus模型 | training script | predict script |
shibing624/ziya-llama-13b-medical-lora | LLaMA-13B | 在240萬條中英文醫(yī)療數(shù)據集shibing624/medical上微調了一版Ziya-LLaMA-13B模型,醫(yī)療問答效果有提升,發(fā)布微調后的LoRA權重 | training script | predict script |
1.2.2 模型評價得分
Model | Arch | Introduction | Score |
---|---|---|---|
LLaMA-7B-Chinese-Alpaca | LLaMA-7B | 復用ymcui/Chinese-LLaMA-Alpaca的評估case和得分 | 4.92 |
LLaMA-13B-Chinese-Alpaca | LLaMA-13B | 復用ymcui/Chinese-LLaMA-Alpaca的評估case和得分 | 7.05 |
ChatGLM-6B | ChatGLM-6B | 基于原生THUDM/chatglm-6b 評估測試集得分 |
7.16 |
ChatGLM-6B-v1.1 | ChatGLM-6B | 基于原生THUDM/chatglm-6b v1.1英文優(yōu)化版模型評估測試集得分 |
7.18 |
shibing624/chatglm-6b-belle-zh-lora | ChatGLM-6B | 基于THUDM/chatglm-6b 加載shibing624/chatglm-6b-belle-zh-lora LoRA模型后評估測試集得分 |
7.03 |
facat/alpaca-lora-cn-13b | LLaMA-13B | 基于decapoda-research/llama-13b-hf 加載facat/alpaca-lora-cn-13b LoRA模型后評估測試集并標注得分 |
4.13 |
Chinese-Vicuna/Chinese-Vicuna-lora-13b-belle-and-guanaco | LLaMA-13B | 基于decapoda-research/llama-13b-hf 加載Chinese-Vicuna/Chinese-Vicuna-lora-13b-belle-and-guanaco LoRA模型后評估測試集并標注得分 |
3.98 |
shibing624/chinese-alpaca-plus-7b-hf | LLaMA-7B | 使用ymcui/Chinese-LLaMA-Alpaca 合并模型方法合并HF權重后,評估測試集并標注得分 | 6.93 |
shibing624/chinese-alpaca-plus-13b-hf | LLaMA-13B | 使用ymcui/Chinese-LLaMA-Alpaca 合并模型方法合并HF權重后,評估測試集并標注得分 | 7.07 |
TheBloke/vicuna-13B-1.1-HF | LLaMA-13B | 使用原生vicuna-13B-1.1合并后的模型,評估測試集并標注得分 | 5.13 |
IDEA-CCNL/Ziya-LLaMA-13B-v1 | LLaMA-13B | 使用姜子牙通用大模型V1,評估測試集并標注得分 | 6.63 |
說明:
- 評估case,詳見在線文檔:中文LLM-benchmark多任務評估集(騰訊文檔) https://docs.qq.com/sheet/DUUpsREtWbFBsUVJE?tab=r7io7g 感謝韓俊明、楊家銘等同學的標注
- 評估任務類型包括:知識問答,開放式問答,數(shù)值計算,詩詞、音樂、體育,娛樂,寫文章,文本翻譯,代碼編程,倫理、拒答類,多輪問答,Score 評分是前100條(10分制)的平均分數(shù),人工打分,越高越好
- 評估數(shù)量少,任務類型不夠全面,評分之間的大小關系有一些參考價值,分數(shù)的絕對值沒太大參考價值
- 評估腳本:tests/test_benchmark.py ,使用fp16預測,無int量化處理,運行腳本可復現(xiàn)評估結果,但生成結果具有隨機性,受解碼超參、隨機種子等因素影響。評測并非絕對嚴謹,測試結果僅供晾曬參考
- 結論:ChatGLM-6B、LLaMA-13B的中文衍生模型(包括alpaca-plus, vicuna, ziya)的表現(xiàn)屬于第一梯隊,原版LLaMA-7B的表現(xiàn)整體稍差些
- LLaMA-13B-Chinese-Alpaca是在原版LLaMA上擴充了中文詞表,并融入了約20G的通用中文語料后的指令微調模型,表明了LLaMA的底座優(yōu)秀,具有強大的語言遷移能力
- ChatGLM這種原生的中文預訓練模型更理解中文語義,且在中文知識問答、開放式問答得分高
- LLaMA系列模型數(shù)值計算、中英翻譯、代碼編程類得分高
- 經過中文預訓練和SFT微調后的Chinese-LLaMA模型在中文詩詞、娛樂、倫理類得分相較原版LLaMA有提升
2.demo展示
HuggingFace Demo: https://huggingface.co/spaces/shibing624/chinese-couplet-generate
run example: examples/gradio_demo.py to see the demo:
python examples/gradio_demo.py
model trained by examples/t5/T5_Finetune_Chinese_Couplet.ipynb
2.1 安裝
pip install -U textgen
or
install develop version:
pip install torch # conda install pytorch
git clone https://github.com/shibing624/textgen.git
cd textgen
python setup.py install
2.2 ChatGLM-6B 模型
2.2.1 使用 ChatGLM-6B 微調后的模型
example: examples/chatglm/inference_demo.py
from textgen import ChatGlmModel
model = ChatGlmModel("chatglm", "THUDM/chatglm-6b", peft_name="shibing624/chatglm-6b-csc-zh-lora")
r = model.predict(["對下面中文拼寫糾錯:\n少先隊員因該為老人讓坐。\n答:"])
print(r) # ['少先隊員應該為老人讓座。\n錯誤字:因,坐']
PS:由于使用了開發(fā)中的peft庫,可能由于版本更新,導致LoRA模型加載失敗,建議使用下面的訓練方法,自己訓練LoRA模型。
2.2.2 訓練 ChatGLM-6B 微調模型
- 支持自定義訓練數(shù)據集和訓練參數(shù),數(shù)據集格式參考examples/data/zh_csc_test.tsv或者examples/data/json_files/belle_10.json
- 支持AdaLoRA、LoRA、P_Tuning、Prefix_Tuning等部分參數(shù)微調方法,也支持全參微調
- 支持多卡訓練,支持混合精度訓練
example: examples/chatglm/training_chatglm_demo.py
單卡訓練:
cd examples/chatglm
CUDA_VISIBLE_DEVICES=0 python training_chatglm_demo.py --do_train --do_predict --num_epochs 1 --output_dir outputs_chatglm
多卡訓練:
cd examples/chatglm
CUDA_VISIBLE_DEVICES=0,1 torchrun --nproc_per_node 2 training_chatglm_demo.py --do_train --do_predict --num_epochs 20
2.2.3 基于微調(LoRA)模型繼續(xù)訓練
如果需要基于Lora模型繼續(xù)訓練,可以使用下面的腳本合并模型為新的base model,再微調訓練即可。
執(zhí)行以下命令:
python -m textgen/chatglm/merge_peft_adapter.py \
--base_model_name_or_path path_to_original_base_model_dir \
--peft_model_path path_to_peft_model_dir \
--output_dir path_to_output_dir
參數(shù)說明:
--base_model_name_or_path:存放HF格式的底座模型權重和配置文件的目錄
--peft_model_path:存放PEFT格式的微調模型權重和配置文件的目錄
--output_dir:指定保存全量模型權重的目錄,默認為./merged
2.3 LLaMA 模型
2.3.1 使用 LLaMA 微調后的模型
example: examples/gpt/inference_demo.py
show code example and resultimport sys
sys.path.append('../..')
from textgen import GptModel
def generate_prompt(instruction):
return f"""Below is an instruction that describes a task. Write a response that appropriately completes the request.\n\n### Instruction:{instruction}\n\n### Response:"""
model = GptModel("llama", "decapoda-research/llama-7b-hf", peft_name="ziqingyang/chinese-alpaca-lora-7b")
predict_sentence = generate_prompt("問:用一句話描述地球為什么是獨一無二的。\n答:")
r = model.predict([predict_sentence])
print(r) # ['地球是唯一一顆擁有生命的行星。']
2.3.2訓練 LLaMA 微調模型
- 支持自定義訓練數(shù)據集和訓練參數(shù),數(shù)據集格式參考examples/data/zh_csc_test.tsv或者shibing624/alpaca-zh
- 支持AdaLoRA、LoRA、P_Tuning、Prefix_Tuning等部分參數(shù)微調方法,也支持全參微調
- 支持多卡訓練,支持混合精度訓練,使用方法同上(ChatGLM多卡訓練)
example: examples/llama/training_llama_demo.py
2.3.3 基于微調(LoRA)模型繼續(xù)訓練
如果需要基于Lora模型繼續(xù)訓練,可以使用下面的腳本合并模型為新的base model,再微調訓練即可。
單LoRA權重合并(適用于 Chinese-LLaMA, Chinese-LLaMA-Plus, Chinese-Alpaca)
執(zhí)行以下命令:
python -m textgen/gpt/merge_peft_adapter.py \
--base_model_name_or_path path_to_original_base_model_dir \
--peft_model_path path_to_chinese_llama_or_alpaca_lora \
--output_type [pth|huggingface]
--output_dir path_to_output_dir
參數(shù)說明:
--base_model_name_or_path:存放HF格式的底座模型權重和配置文件的目錄
--peft_model_path:中文LLaMA/Alpaca LoRA解壓后文件所在目錄,也可使用HF上的Lora模型名稱,如`ziqingyang/chinese-alpaca-lora-7b`會自動下載對應模型
--output_type: 指定輸出格式,可為pth或huggingface。若不指定,默認為huggingface
--output_dir:指定保存全量模型權重的目錄,默認為./merged
--offload_dir(可選):對于低內存用戶需要指定一個offload緩存路徑
2.3.4 訓練領域模型
Note: 為了全面的介紹訓練醫(yī)療大模型的過程,把4階段訓練方法(Pretraining, Supervised Finetuning, Reward Modeling and Reinforcement Learning)單獨新建了一個repo:shibing624/MedicalGPT,請移步該repo查看訓練方法。
2.4 BLOOM 模型
2.4.1訓練 BLOOM 微調模型
example: examples/bloom/training_bloom_demo.py
2.5 ConvSeq2Seq 模型
訓練并預測ConvSeq2Seq模型:
example: examples/seq2sesq/training_convseq2seq_model_demo.py
show code example and resultimport argparse
from loguru import logger
import sys
sys.path.append('../..')
from textgen.seq2seq.conv_seq2seq_model import ConvSeq2SeqModel
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--train_file', default='../data/zh_dialog.tsv', type=str, help='Training data file')
parser.add_argument('--do_train', action='store_true', help='Whether to run training.')
parser.add_argument('--do_predict', action='store_true', help='Whether to run predict.')
parser.add_argument('--output_dir', default='./outputs/convseq2seq_zh/', type=str, help='Model output directory')
parser.add_argument('--max_seq_length', default=50, type=int, help='Max sequence length')
parser.add_argument('--num_epochs', default=200, type=int, help='Number of training epochs')
parser.add_argument('--batch_size', default=32, type=int, help='Batch size')
args = parser.parse_args()
logger.info(args)
if args.do_train:
logger.info('Loading data...')
model = ConvSeq2SeqModel(epochs=args.num_epochs, batch_size=args.batch_size,
model_dir=args.output_dir, max_length=args.max_seq_length)
model.train_model(args.train_file)
print(model.eval_model(args.train_file))
if args.do_predict:
model = ConvSeq2SeqModel(epochs=args.num_epochs, batch_size=args.batch_size,
model_dir=args.output_dir, max_length=args.max_seq_length)
sentences = ["什么是ai", "你是什么類型的計算機", "你知道熱力學嗎"]
print("inputs:", sentences)
print('outputs:', model.predict(sentences))
if __name__ == '__main__':
main()
output:
inputs: ["什么是ai", "你是什么類型的計算機", "你知道熱力學嗎"]
outputs: ['人工智能是工程和科學的分支,致力于構建思維的機器。', '我的程序運行在python,所以我在任何運腦上工作!', '我不能錯熱是一個瘋狂的人工智能"200年。']
2.6 BART 模型
訓練并預測BART模型:
example: examples/seq2sesq/training_bartseq2seq_zh_demo.py
output:
inputs: ['什么是ai', '你是什么類型的計算機', '你知道熱力學嗎']
outputs: ['人工智能是工程和科學的分支,致力于構', '我的程序運行在python,所以我在任何電腦上', '什么是熱力學嗎?']
2.7 T5 模型
example: examples/t5/training_zh_t5_model_demo.py
show code example and resultimport argparse
from loguru import logger
import pandas as pd
import sys
sys.path.append('../..')
from textgen.t5 import T5Model
def load_data(file_path):
data = []
with open(file_path, 'r', encoding='utf-8') as f:
for line in f:
line = line.strip('\n')
terms = line.split('\t')
if len(terms) == 2:
data.append(['QA', terms[0], terms[1]])
else:
logger.warning(f'line error: {line}')
return data
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--train_file', default='../data/zh_dialog.tsv', type=str, help='Training data file')
parser.add_argument('--model_type', default='t5', type=str, help='Transformers model type')
parser.add_argument('--model_name', default='Langboat/mengzi-t5-base', type=str, help='Transformers model or path')
parser.add_argument('--do_train', action='store_true', help='Whether to run training.')
parser.add_argument('--do_predict', action='store_true', help='Whether to run predict.')
parser.add_argument('--output_dir', default='./outputs/mengzi_t5_zh/', type=str, help='Model output directory')
parser.add_argument('--max_seq_length', default=50, type=int, help='Max sequence length')
parser.add_argument('--num_epochs', default=10, type=int, help='Number of training epochs')
parser.add_argument('--batch_size', default=32, type=int, help='Batch size')
args = parser.parse_args()
logger.info(args)
if args.do_train:
logger.info('Loading data...')
# train_data: Pandas DataFrame containing the 3 columns - `prefix`, `input_text`, `target_text`.
# - `prefix`: A string indicating the task to perform. (E.g. `"question"`, `"stsb"`)
# - `input_text`: The input text. `prefix` is prepended to form the full input. (<prefix>: <input_text>)
# - `target_text`: The target sequence
train_data = load_data(args.train_file)
logger.debug('train_data: {}'.format(train_data[:10]))
train_df = pd.DataFrame(train_data, columns=["prefix", "input_text", "target_text"])
eval_data = load_data(args.train_file)[:10]
eval_df = pd.DataFrame(eval_data, columns=["prefix", "input_text", "target_text"])
model_args = {
"reprocess_input_data": True,
"overwrite_output_dir": True,
"max_seq_length": args.max_seq_length,
"train_batch_size": args.batch_size,
"num_train_epochs": args.num_epochs,
"save_eval_checkpoints": False,
"save_model_every_epoch": False,
"evaluate_generated_text": True,
"evaluate_during_training": True,
"evaluate_during_training_verbose": True,
"use_multiprocessing": True,
"save_best_model": True,
"output_dir": args.output_dir,
"use_early_stopping": True,
}
# model_type: t5 model_name: Langboat/mengzi-t5-base
model = T5Model(args.model_type, args.model_name, args=model_args)
def count_matches(labels, preds):
logger.debug(f"labels: {labels[:10]}")
logger.debug(f"preds: {preds[:10]}")
match = sum([1 if label == pred else 0 for label, pred in zip(labels, preds)])
logger.debug(f"match: {match}")
return match
model.train_model(train_df, eval_data=eval_df, matches=count_matches)
print(model.eval_model(eval_df, matches=count_matches))
if args.do_predict:
model = T5Model(args.model_type, args.output_dir)
sentences = ["什么是ai", "你是什么類型的計算機", "你知道熱力學嗎"]
print("inputs:", sentences)
print("outputs:", model.predict(sentences))
if __name__ == '__main__':
main()
output:
inputs: ['什么是ai', '你是什么類型的計算機', '你知道熱力學嗎']
outputs: ['人工智能有兩個廣義的定義,任何擬人的機械,如在卡雷爾capeks', '我的程序運行在Python,所以我在任何電腦上工作!', '什么是熱力學']
2.8 GPT2 模型
2.8.1 中文GPT2 - 文章生成
使用中文數(shù)據集(段落格式,\n
間隔),訓練GPT2模型,可以用于詩歌生成、文章生成等任務。
example: examples/gpt2/training_zh_gpt2_demo.py
2.8.2 中文GPT2 - 對聯(lián)生成
使用中文對聯(lián)數(shù)據集(tsv格式,\t
間隔),自定義數(shù)據集讀取Dataset,訓練GPT2模型,可以用于對聯(lián)生成、對話生成等任務。
example: examples/gpt2/training_couplet_gpt2_demo.py
GPT2 vs T5:
- 都是從Transformer改進來的,T5同時有編碼器和解碼器,GPT2只有解碼器
- T5的模型優(yōu)勢是處理給定輸入,產出對應輸出的任務,如翻譯、對話、問答等
- GPT2的模型優(yōu)勢是自由創(chuàng)作,如寫一篇短文
- T5的對聯(lián)生成效果好于GPT2、GPT2的詩詞生成效果好于T5
- 對聯(lián)生成模型調研
- 古詩生成模型調研
2.9 SongNet 模型
格式控制的文本生成模型,paper見SongNet: Rigid Formats Controlled Text Generation,
適用于強韻律格式要求的詩歌、對聯(lián)、歌詞生成等任務。
example: examples/songnet/training_zh_songnet_demo.py
2.10 Keyword Text Augmentation(EDA/UDA)
example: examples/text_augmentation/text_augmentation_demo.py
show code example and resultimport sys
sys.path.append('..')
from textgen.augment import TextAugment
if __name__ == '__main__':
docs = ['主要研究機器學習、深度學習、計算機視覺、智能對話系統(tǒng)相關內容',
'晚上肚子好難受',
'你會武功嗎,我不會',
'組裝標題質量受限于廣告主自提物料的片段質量,且表達豐富度有限',
]
m = TextAugment(sentence_list=docs)
a = docs[0]
print(a)
b = m.augment(a, aug_ops='random-0.2')
print('random-0.2:', b)
b = m.augment(a, aug_ops='insert-0.2')
print('insert-0.2:', b)
b = m.augment(a, aug_ops='delete-0.2')
print('delete-0.2:', b)
b = m.augment(a, aug_ops='tfidf-0.2')
print('tfidf-0.2:', b)
b = m.augment(a, aug_ops='mix-0.2')
print('mix-0.2:', b)
output:
主要研究機器學習、深度學習、計算機視覺、智能對話系統(tǒng)相關內容
random-0.2: ('主要陪陪機器學習、深度學習主要計算機視覺、智能對話系統(tǒng)受限于內容', [('研究', '陪陪', 2, 4), ('、', '主要', 13, 15), ('相關', '受限于', 27, 30)])
insert-0.2: ('主要研究機器機器學習學習、深度深度學習、計算機視覺、智能對話系統(tǒng)相關內容', [('機器', '機器機器', 4, 8), ('學習', '學習學習', 8, 12), ('深度', '深度深度', 13, 17)])
delete-0.2: ('主要研究機器學習、深度學習、計算機視覺、對話系統(tǒng)相關內容', [('智能', '', 20, 20)])
tfidf-0.2: ('一是研究機器學習、深度學習、計算機聽覺、智能交談系統(tǒng)密切相關內容', [('主要', '一是', 0, 2), ('視覺', '聽覺', 17, 19), ('對話', '交談', 22, 24), ('相關', '密切相關', 26, 30)])
mix-0.2: ('主要研究機器學習、深度學、計算機聽覺、智能對話軟件系統(tǒng)相關內容', [('學習', '學', 11, 12), ('視覺', '聽覺', 16, 18), ('系統(tǒng)', '軟件系統(tǒng)', 23, 27)])
2.11 TGLS 模型(無監(jiān)督相似文本生成模型)
無監(jiān)督的中文電商評論生成:從電商評論中提取用戶表達觀點的短句并進行組合來生成仿真評論。
example: examples/unsup_generation/unsup_generation_demo.py
show code example and resultimport os
import sys
sys.path.append('..')
from textgen.unsup_generation import TglsModel, load_list
pwd_path = os.path.abspath(os.path.dirname(__file__))
samples = load_list(os.path.join(pwd_path, './data/ecommerce_comments.txt'))
docs_text = [
["挺好的,速度很快,也很實惠,不知效果如何",
"產品沒得說,買了以后就降價,心情不美麗。",
"剛收到,包裝很完整,不錯",
"發(fā)貨速度很快,物流也不錯,同一時間買的兩個東東,一個先到一個還在路上。這個水水很喜歡,不過蓋子真的開了。蓋不牢了現(xiàn)在。",
"包裝的很好,是正品",
"被種草蘭蔻粉水三百元一大瓶囤貨,希望是正品好用,收到的時候用保鮮膜包裹得嚴嚴實實,只敢買考拉自營的護膚品",
],
['很溫和,清洗的也很干凈,不油膩,很不錯,會考慮回購,第一次考拉買護膚品,滿意',
'這款卸妝油我會無限回購的。即使我是油痘皮,也不會悶痘,同時在臉部按摩時,還能解決白頭的脂肪粒的問題。用清水洗完臉后,非常的清爽。',
'自從用了fancl之后就不用其他卸妝了,卸的舒服又干凈',
'買貴了,大潤發(fā)才賣79。9。',
],
samples
]
m = TglsModel(docs_text)
r = m.generate(samples[:500])
print('size:', len(r))
for review in r:
print('\t' + review)
output:
美迪惠爾 N.M.F針劑水庫保濕面膜有如下的20句評論,其中有10句是真實用戶評論,10句是生成的評論,能看出來么???
還不錯還不錯還不錯還不錯。
東西到了,不知道好不好用。試用過后再來評價。到時看網評都還可以。
哺乳期唯一使用的護膚品,每天都是素顏,臉面全靠面膜吊著??補水??不粘膩一如既往的支持,喜歡??
搞活動時買的面膜,不知道這個面膜是真是假敷在臉上面膜紙都有小水泡鼓起來。
很不錯,非常補水,用過的都知道,性價比之王,好用又不貴,正品,用著放心,物流也很快。
面膜非常好用哦。面膜薄薄的。好像是蠶絲面膜啊。精華很多呢。敷在臉上很舒服。感覺挺保濕的,味道也挺好聞的。就是里面只有單純的面膜直接敷臉上有點不好弄,哈哈哈
還可以保濕效果不錯水潤潤的每天貼一片臉也不干了用完了在買點,不錯還會繼續(xù)回購的。
快遞很快,東西很贊!想要得點考拉豆不容易,還要三十個字。時間寶貴,廢話不說!用過了就知道了
挺好用的,朋友推薦來的
挺好用的,淡淡的,雖然不是很濃精華的感覺,但是效果也蠻好的。劃算
不得不說美迪惠爾的面膜是我用過的最好的面膜之一??補水效果非常好,沒想到這么便宜的價格竟真的能買到真品。
保濕效果挺好的,面膜很好用。
期待好的產品。
一打開包裝里面的精華剛剛好,用了補水補水效果不錯,物流非??臁?皮膚很光滑??比上去速度快三天就到了。
前兩天皮膚干燥連續(xù)敷了兩個晚上感覺還不錯??補水效果明顯!可想而知精華液又多充足??敷上以后涼涼的很舒服。
補水效果一般吧~但是我用的韓國背回來的面膜紙不算薄,希望好用會回購的,敷上臉感覺比較清爽~價格還不便宜。
希望好用,面膜用過了很好用,皮膚水嫩光滑白皙,補水不錯,價格也合適。
就是精華液太少了,保濕效果不錯。
面膜的補水效果非常好,保濕效果確實很贊,這個面膜相對于膠原蛋白和美白的那兩款的面膜紙要厚一些,看著價格合適。
前10句是真實用戶評論,后10句是生成的。
3.數(shù)據集 Dataset
3.1 SFT datasets
- 50萬條中文ChatGPT指令Belle數(shù)據集:BelleGroup/train_0.5M_CN
- 100萬條中文ChatGPT指令Belle數(shù)據集:BelleGroup/train_1M_CN
- 5萬條英文ChatGPT指令Alpaca數(shù)據集:50k English Stanford Alpaca dataset
- 2萬條中文ChatGPT指令Alpaca數(shù)據集:shibing624/alpaca-zh
- 69萬條中文指令Guanaco數(shù)據集(Belle50萬條+Guanaco19萬條):Chinese-Vicuna/guanaco_belle_merge_v1.0
- 240萬條中文醫(yī)療數(shù)據集(包括預訓練數(shù)據和指令微調數(shù)據集):shibing624/medical
- 5萬條英文ChatGPT多輪對話數(shù)據集:RyokoAI/ShareGPT52K
- 80萬條中文ChatGPT多輪對話數(shù)據集:BelleGroup/multiturn_chat_0.8M
- 116萬條中文ChatGPT多輪對話數(shù)據集:fnlp/moss-002-sft-data
3.2 Reward Model datasets
- 原版的oasst1數(shù)據集:OpenAssistant/oasst1
- 2萬條多語言oasst1的reward數(shù)據集:tasksource/oasst1_pairwise_rlhf_reward
- 11萬條英文hh-rlhf的reward數(shù)據集:Dahoas/full-hh-rlhf
- 9萬條英文reward數(shù)據集(來自Anthropic’s Helpful Harmless dataset):Dahoas/static-hh
- 7萬條英文reward數(shù)據集(來源同上):Dahoas/rm-static
- 7萬條繁體中文的reward數(shù)據集(翻譯自rm-static)liswei/rm-static-m2m100-zh
- 7萬條英文Reward數(shù)據集:yitingxie/rlhf-reward-datasets
- 3千條中文知乎問答偏好數(shù)據集:liyucheng/zhihu_rlhf_3k
參考鏈接:https://github.com/shibing624/textgen文章來源:http://www.zghlxwxcb.cn/news/detail-641593.html
如果github進入不了也可進入https://download.csdn.net/download/sinat_39620217/88205079 免費下載相關資料文章來源地址http://www.zghlxwxcb.cn/news/detail-641593.html
到了這里,關于開啟想象翅膀:輕松實現(xiàn)文本生成模型的創(chuàng)作應用,支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,開箱即用的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!