開啟想象翅膀:輕松實現文本生成模型的創作應用,支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,開箱即用
TextGen: Implementation of Text Generation models
1.介紹
TextGen實現了多種文本生成模型,包括:LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,開箱即用。
1.1 最新更新
[2023/06/15] v1.0.0版本: 新增ChatGLM/LLaMA/Bloom模型的多輪對話微調訓練,并發布醫療問診LoRA模型shibing624/ziya-llama-13b-medical-lora。詳見Release-v1.0.0
[2023/06/02] v0.2.7版本: 新增ChatGLM/LLaMA/Bloom模型的SFT微調訓練,并發布適用于通用對話和中文糾錯的LoRA模型。詳見Release-v0.2.7
1.2 相關介紹
- ChatGLM:本項目基于PyTorch實現了ChatGLM-6B模型LoRA微調訓練和預測,可以用于句子糾錯、對話等文本生成任務
- LLaMA:本項目基于PyTorch實現了LLaMA模型LoRA微調訓練和預測,可以用于對話生成任務和領域微調訓練
- BLOOM:本項目基于PyTorch實現了BLOOM模型LoRA微調訓練和預測,可以用于對話生成任務和領域微調訓練
- UDA/EDA:本項目實現了UDA(非核心詞替換)、EDA和Back Translation(回譯)算法,基于TF-IDF將句子中部分不重要詞替換為同義詞,隨機詞插入、刪除、替換等方法,產生新的文本,實現了文本擴增
- Seq2Seq:本項目基于PyTorch實現了Seq2Seq、ConvSeq2Seq、BART模型的訓練和預測,可以用于文本翻譯、對話生成、摘要生成等文本生成任務
- T5:本項目基于PyTorch實現了T5和CopyT5模型訓練和預測,可以用于文本翻譯、對話生成、對聯生成、文案撰寫等文本生成任務
- GPT2:本項目基于PyTorch實現了GTP2模型訓練和預測,可以用于文章生成、對聯生成等文本生成任務
- SongNet:本項目基于PyTorch實現了SongNet模型訓練和預測,可以用于規范格式的詩詞、歌詞等文本生成任務
- TGLS:本項目實現了TGLS無監督相似文本生成模型,是一種“先搜索后學習”的文本生成方法,通過反復迭代學習候選集,最終模型能生成類似候選集的高質量相似文本
1.2.1 支持模型
release基于textgen
訓練的中文模型,模型已經release到HuggingFace models,指定模型名稱textgen
會自動下載模型,可直接使用。
Model | Arch | Introduction | Train Script | Predict Script |
---|---|---|---|---|
shibing624/t5-chinese-couplet | T5 | fine-tuned中文對聯后的模型 | 對聯生成模型調研 | predict script |
shibing624/songnet-base-chinese-songci | SongNet | fine-tuned宋詞后的模型 | training script | predict script |
shibing624/songnet-base-chinese-couplet | SongNet | fine-tuned對聯后的模型 | training script | predict script |
shibing624/chatglm-6b-csc-zh-lora | ChatGLM-6B | 在27萬中文拼寫糾錯數據shibing624/CSC上微調了一版ChatGLM-6B,糾錯效果有提升,發布微調后的LoRA權重 | training script | predict script |
shibing624/chatglm-6b-belle-zh-lora | ChatGLM-6B | 在100萬條中文ChatGPT指令Belle數據集BelleGroup/train_1M_CN上微調了一版ChatGLM-6B,問答效果有提升,發布微調后的LoRA權重 | training script | predict script |
shibing624/llama-13b-belle-zh-lora | LLaMA-13B | 在100萬條中文ChatGPT指令Belle數據集BelleGroup/train_1M_CN上微調了一版Llama-13B,問答效果有提升,發布微調后的LoRA權重 | training script | predict script |
shibing624/chinese-alpaca-plus-7b-hf | LLaMA-7B | 中文LLaMA-Plus, Alpaca-Plus 7B版本,在LLaMA-7B上擴充了中文詞表并繼續預訓練120G文本(通用領域),在4M指令數據集上微調后得到的中文Alpaca-plus模型 | training script | predict script |
shibing624/chinese-alpaca-plus-13b-hf | LLaMA-13B | 中文LLaMA-Plus, Alpaca-Plus 13B版本,在LLaMA-13B上擴充了中文詞表并繼續預訓練120G文本(通用領域),在4.3M指令數據集上微調后得到的中文Alpaca-plus模型 | training script | predict script |
shibing624/ziya-llama-13b-medical-lora | LLaMA-13B | 在240萬條中英文醫療數據集shibing624/medical上微調了一版Ziya-LLaMA-13B模型,醫療問答效果有提升,發布微調后的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英文優化版模型評估測試集得分 | 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 感謝韓俊明、楊家銘等同學的標注
- 評估任務類型包括:知識問答,開放式問答,數值計算,詩詞、音樂、體育,娛樂,寫文章,文本翻譯,代碼編程,倫理、拒答類,多輪問答,Score 評分是前100條(10分制)的平均分數,人工打分,越高越好
- 評估數量少,任務類型不夠全面,評分之間的大小關系有一些參考價值,分數的絕對值沒太大參考價值
- 評估腳本:tests/test_benchmark.py ,使用fp16預測,無int量化處理,運行腳本可復現評估結果,但生成結果具有隨機性,受解碼超參、隨機種子等因素影響。評測并非絕對嚴謹,測試結果僅供晾曬參考
- 結論:ChatGLM-6B、LLaMA-13B的中文衍生模型(包括alpaca-plus, vicuna, ziya)的表現屬于第一梯隊,原版LLaMA-7B的表現整體稍差些
- LLaMA-13B-Chinese-Alpaca是在原版LLaMA上擴充了中文詞表,并融入了約20G的通用中文語料后的指令微調模型,表明了LLaMA的底座優秀,具有強大的語言遷移能力
- ChatGLM這種原生的中文預訓練模型更理解中文語義,且在中文知識問答、開放式問答得分高
- LLaMA系列模型數值計算、中英翻譯、代碼編程類得分高
- 經過中文預訓練和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 ChatGlmModelmodel = ChatGlmModel("chatglm", "THUDM/chatglm-6b", peft_name="shibing624/chatglm-6b-csc-zh-lora")
r = model.predict(["對下面中文拼寫糾錯:\n少先隊員因該為老人讓坐。\n答:"])
print(r) # ['少先隊員應該為老人讓座。\n錯誤字:因,坐']
PS:由于使用了開發中的peft庫,可能由于版本更新,導致LoRA模型加載失敗,建議使用下面的訓練方法,自己訓練LoRA模型。
2.2.2 訓練 ChatGLM-6B 微調模型
- 支持自定義訓練數據集和訓練參數,數據集格式參考examples/data/zh_csc_test.tsv或者examples/data/json_files/belle_10.json
- 支持AdaLoRA、LoRA、P_Tuning、Prefix_Tuning等部分參數微調方法,也支持全參微調
- 支持多卡訓練,支持混合精度訓練
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)模型繼續訓練
如果需要基于Lora模型繼續訓練,可以使用下面的腳本合并模型為新的base model,再微調訓練即可。
執行以下命令:
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
參數說明:
--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 syssys.path.append('../..')
from textgen import GptModeldef 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 微調模型
- 支持自定義訓練數據集和訓練參數,數據集格式參考examples/data/zh_csc_test.tsv或者shibing624/alpaca-zh
- 支持AdaLoRA、LoRA、P_Tuning、Prefix_Tuning等部分參數微調方法,也支持全參微調
- 支持多卡訓練,支持混合精度訓練,使用方法同上(ChatGLM多卡訓練)
example: examples/llama/training_llama_demo.py
2.3.3 基于微調(LoRA)模型繼續訓練
如果需要基于Lora模型繼續訓練,可以使用下面的腳本合并模型為新的base model,再微調訓練即可。
單LoRA權重合并(適用于 Chinese-LLaMA, Chinese-LLaMA-Plus, Chinese-Alpaca)
執行以下命令:
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
參數說明:
--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: 為了全面的介紹訓練醫療大模型的過程,把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 syssys.path.append('../..')
from textgen.seq2seq.conv_seq2seq_model import ConvSeq2SeqModeldef 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 syssys.path.append('../..')
from textgen.t5 import T5Modeldef 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 datadef 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 sequencetrain_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-basemodel = 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 matchmodel.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 - 文章生成
使用中文數據集(段落格式,\n
間隔),訓練GPT2模型,可以用于詩歌生成、文章生成等任務。
example: examples/gpt2/training_zh_gpt2_demo.py
2.8.2 中文GPT2 - 對聯生成
使用中文對聯數據集(tsv格式,\t
間隔),自定義數據集讀取Dataset,訓練GPT2模型,可以用于對聯生成、對話生成等任務。
example: examples/gpt2/training_couplet_gpt2_demo.py
GPT2 vs T5:
- 都是從Transformer改進來的,T5同時有編碼器和解碼器,GPT2只有解碼器
- T5的模型優勢是處理給定輸入,產出對應輸出的任務,如翻譯、對話、問答等
- GPT2的模型優勢是自由創作,如寫一篇短文
- T5的對聯生成效果好于GPT2、GPT2的詩詞生成效果好于T5
- 對聯生成模型調研
- 古詩生成模型調研
2.9 SongNet 模型
格式控制的文本生成模型,paper見SongNet: Rigid Formats Controlled Text Generation,
適用于強韻律格式要求的詩歌、對聯、歌詞生成等任務。
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 syssys.path.append('..')
from textgen.augment import TextAugmentif __name__ == '__main__':docs = ['主要研究機器學習、深度學習、計算機視覺、智能對話系統相關內容','晚上肚子好難受','你會武功嗎,我不會','組裝標題質量受限于廣告主自提物料的片段質量,且表達豐富度有限',]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:
主要研究機器學習、深度學習、計算機視覺、智能對話系統相關內容
random-0.2: ('主要陪陪機器學習、深度學習主要計算機視覺、智能對話系統受限于內容', [('研究', '陪陪', 2, 4), ('、', '主要', 13, 15), ('相關', '受限于', 27, 30)])
insert-0.2: ('主要研究機器機器學習學習、深度深度學習、計算機視覺、智能對話系統相關內容', [('機器', '機器機器', 4, 8), ('學習', '學習學習', 8, 12), ('深度', '深度深度', 13, 17)])
delete-0.2: ('主要研究機器學習、深度學習、計算機視覺、對話系統相關內容', [('智能', '', 20, 20)])
tfidf-0.2: ('一是研究機器學習、深度學習、計算機聽覺、智能交談系統密切相關內容', [('主要', '一是', 0, 2), ('視覺', '聽覺', 17, 19), ('對話', '交談', 22, 24), ('相關', '密切相關', 26, 30)])
mix-0.2: ('主要研究機器學習、深度學、計算機聽覺、智能對話軟件系統相關內容', [('學習', '學', 11, 12), ('視覺', '聽覺', 16, 18), ('系統', '軟件系統', 23, 27)])
2.11 TGLS 模型(無監督相似文本生成模型)
無監督的中文電商評論生成:從電商評論中提取用戶表達觀點的短句并進行組合來生成仿真評論。
example: examples/unsup_generation/unsup_generation_demo.py
show code example and resultimport os
import syssys.path.append('..')
from textgen.unsup_generation import TglsModel, load_listpwd_path = os.path.abspath(os.path.dirname(__file__))samples = load_list(os.path.join(pwd_path, './data/ecommerce_comments.txt'))
docs_text = [["挺好的,速度很快,也很實惠,不知效果如何","產品沒得說,買了以后就降價,心情不美麗。","剛收到,包裝很完整,不錯","發貨速度很快,物流也不錯,同一時間買的兩個東東,一個先到一個還在路上。這個水水很喜歡,不過蓋子真的開了。蓋不牢了現在。","包裝的很好,是正品","被種草蘭蔻粉水三百元一大瓶囤貨,希望是正品好用,收到的時候用保鮮膜包裹得嚴嚴實實,只敢買考拉自營的護膚品",],['很溫和,清洗的也很干凈,不油膩,很不錯,會考慮回購,第一次考拉買護膚品,滿意','這款卸妝油我會無限回購的。即使我是油痘皮,也不會悶痘,同時在臉部按摩時,還能解決白頭的脂肪粒的問題。用清水洗完臉后,非常的清爽。','自從用了fancl之后就不用其他卸妝了,卸的舒服又干凈','買貴了,大潤發才賣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句是生成的評論,能看出來么?😂
還不錯還不錯還不錯還不錯。
東西到了,不知道好不好用。試用過后再來評價。到時看網評都還可以。
哺乳期唯一使用的護膚品,每天都是素顏,臉面全靠面膜吊著😄補水💦不粘膩一如既往的支持,喜歡💕
搞活動時買的面膜,不知道這個面膜是真是假敷在臉上面膜紙都有小水泡鼓起來。
很不錯,非常補水,用過的都知道,性價比之王,好用又不貴,正品,用著放心,物流也很快。
面膜非常好用哦。面膜薄薄的。好像是蠶絲面膜啊。精華很多呢。敷在臉上很舒服。感覺挺保濕的,味道也挺好聞的。就是里面只有單純的面膜直接敷臉上有點不好弄,哈哈哈
還可以保濕效果不錯水潤潤的每天貼一片臉也不干了用完了在買點,不錯還會繼續回購的。
快遞很快,東西很贊!想要得點考拉豆不容易,還要三十個字。時間寶貴,廢話不說!用過了就知道了
挺好用的,朋友推薦來的
挺好用的,淡淡的,雖然不是很濃精華的感覺,但是效果也蠻好的。劃算
不得不說美迪惠爾的面膜是我用過的最好的面膜之一😎補水效果非常好,沒想到這么便宜的價格竟真的能買到真品。
保濕效果挺好的,面膜很好用。
期待好的產品。
一打開包裝里面的精華剛剛好,用了補水補水效果不錯,物流非常快。
皮膚很光滑😇比上去速度快三天就到了。
前兩天皮膚干燥連續敷了兩個晚上感覺還不錯😂補水效果明顯!可想而知精華液又多充足😍敷上以后涼涼的很舒服。
補水效果一般吧~但是我用的韓國背回來的面膜紙不算薄,希望好用會回購的,敷上臉感覺比較清爽~價格還不便宜。
希望好用,面膜用過了很好用,皮膚水嫩光滑白皙,補水不錯,價格也合適。
就是精華液太少了,保濕效果不錯。
面膜的補水效果非常好,保濕效果確實很贊,這個面膜相對于膠原蛋白和美白的那兩款的面膜紙要厚一些,看著價格合適。
前10句是真實用戶評論,后10句是生成的。
3.數據集 Dataset
3.1 SFT datasets
- 50萬條中文ChatGPT指令Belle數據集:BelleGroup/train_0.5M_CN
- 100萬條中文ChatGPT指令Belle數據集:BelleGroup/train_1M_CN
- 5萬條英文ChatGPT指令Alpaca數據集:50k English Stanford Alpaca dataset
- 2萬條中文ChatGPT指令Alpaca數據集:shibing624/alpaca-zh
- 69萬條中文指令Guanaco數據集(Belle50萬條+Guanaco19萬條):Chinese-Vicuna/guanaco_belle_merge_v1.0
- 240萬條中文醫療數據集(包括預訓練數據和指令微調數據集):shibing624/medical
- 5萬條英文ChatGPT多輪對話數據集:RyokoAI/ShareGPT52K
- 80萬條中文ChatGPT多輪對話數據集:BelleGroup/multiturn_chat_0.8M
- 116萬條中文ChatGPT多輪對話數據集:fnlp/moss-002-sft-data
3.2 Reward Model datasets
- 原版的oasst1數據集:OpenAssistant/oasst1
- 2萬條多語言oasst1的reward數據集:tasksource/oasst1_pairwise_rlhf_reward
- 11萬條英文hh-rlhf的reward數據集:Dahoas/full-hh-rlhf
- 9萬條英文reward數據集(來自Anthropic’s Helpful Harmless dataset):Dahoas/static-hh
- 7萬條英文reward數據集(來源同上):Dahoas/rm-static
- 7萬條繁體中文的reward數據集(翻譯自rm-static)liswei/rm-static-m2m100-zh
- 7萬條英文Reward數據集:yitingxie/rlhf-reward-datasets
- 3千條中文知乎問答偏好數據集:liyucheng/zhihu_rlhf_3k
參考鏈接:https://github.com/shibing624/textgen
如果github進入不了也可進入https://download.csdn.net/download/sinat_39620217/88205079 免費下載相關資料