開啟想象翅膀:輕松實現文本生成模型的創作應用,支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,開箱即用

開啟想象翅膀:輕松實現文本生成模型的創作應用,支持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會自動下載模型,可直接使用。

ModelArchIntroductionTrain ScriptPredict Script
shibing624/t5-chinese-coupletT5fine-tuned中文對聯后的模型對聯生成模型調研predict script
shibing624/songnet-base-chinese-songciSongNetfine-tuned宋詞后的模型training scriptpredict script
shibing624/songnet-base-chinese-coupletSongNetfine-tuned對聯后的模型training scriptpredict script
shibing624/chatglm-6b-csc-zh-loraChatGLM-6B在27萬中文拼寫糾錯數據shibing624/CSC上微調了一版ChatGLM-6B,糾錯效果有提升,發布微調后的LoRA權重training scriptpredict script
shibing624/chatglm-6b-belle-zh-loraChatGLM-6B在100萬條中文ChatGPT指令Belle數據集BelleGroup/train_1M_CN上微調了一版ChatGLM-6B,問答效果有提升,發布微調后的LoRA權重training scriptpredict script
shibing624/llama-13b-belle-zh-loraLLaMA-13B在100萬條中文ChatGPT指令Belle數據集BelleGroup/train_1M_CN上微調了一版Llama-13B,問答效果有提升,發布微調后的LoRA權重training scriptpredict script
shibing624/chinese-alpaca-plus-7b-hfLLaMA-7B中文LLaMA-Plus, Alpaca-Plus 7B版本,在LLaMA-7B上擴充了中文詞表并繼續預訓練120G文本(通用領域),在4M指令數據集上微調后得到的中文Alpaca-plus模型training scriptpredict script
shibing624/chinese-alpaca-plus-13b-hfLLaMA-13B中文LLaMA-Plus, Alpaca-Plus 13B版本,在LLaMA-13B上擴充了中文詞表并繼續預訓練120G文本(通用領域),在4.3M指令數據集上微調后得到的中文Alpaca-plus模型training scriptpredict script
shibing624/ziya-llama-13b-medical-loraLLaMA-13B在240萬條中英文醫療數據集shibing624/medical上微調了一版Ziya-LLaMA-13B模型,醫療問答效果有提升,發布微調后的LoRA權重training scriptpredict script

1.2.2 模型評價得分

ModelArchIntroductionScore
LLaMA-7B-Chinese-AlpacaLLaMA-7B復用ymcui/Chinese-LLaMA-Alpaca的評估case和得分4.92
LLaMA-13B-Chinese-AlpacaLLaMA-13B復用ymcui/Chinese-LLaMA-Alpaca的評估case和得分7.05
ChatGLM-6BChatGLM-6B基于原生THUDM/chatglm-6b評估測試集得分7.16
ChatGLM-6B-v1.1ChatGLM-6B基于原生THUDM/chatglm-6bv1.1英文優化版模型評估測試集得分7.18
shibing624/chatglm-6b-belle-zh-loraChatGLM-6B基于THUDM/chatglm-6b加載shibing624/chatglm-6b-belle-zh-loraLoRA模型后評估測試集得分7.03
facat/alpaca-lora-cn-13bLLaMA-13B基于decapoda-research/llama-13b-hf加載facat/alpaca-lora-cn-13bLoRA模型后評估測試集并標注得分4.13
Chinese-Vicuna/Chinese-Vicuna-lora-13b-belle-and-guanacoLLaMA-13B基于decapoda-research/llama-13b-hf加載Chinese-Vicuna/Chinese-Vicuna-lora-13b-belle-and-guanacoLoRA模型后評估測試集并標注得分3.98
shibing624/chinese-alpaca-plus-7b-hfLLaMA-7B使用ymcui/Chinese-LLaMA-Alpaca 合并模型方法合并HF權重后,評估測試集并標注得分6.93
shibing624/chinese-alpaca-plus-13b-hfLLaMA-13B使用ymcui/Chinese-LLaMA-Alpaca 合并模型方法合并HF權重后,評估測試集并標注得分7.07
TheBloke/vicuna-13B-1.1-HFLLaMA-13B使用原生vicuna-13B-1.1合并后的模型,評估測試集并標注得分5.13
IDEA-CCNL/Ziya-LLaMA-13B-v1LLaMA-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 微調模型

  1. 支持自定義訓練數據集和訓練參數,數據集格式參考examples/data/zh_csc_test.tsv或者examples/data/json_files/belle_10.json
  2. 支持AdaLoRA、LoRA、P_Tuning、Prefix_Tuning等部分參數微調方法,也支持全參微調
  3. 支持多卡訓練,支持混合精度訓練

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 result
import 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 微調模型

  1. 支持自定義訓練數據集和訓練參數,數據集格式參考examples/data/zh_csc_test.tsv或者shibing624/alpaca-zh
  2. 支持AdaLoRA、LoRA、P_Tuning、Prefix_Tuning等部分參數微調方法,也支持全參微調
  3. 支持多卡訓練,支持混合精度訓練,使用方法同上(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 result
import 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 result
import 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:

  1. 都是從Transformer改進來的,T5同時有編碼器和解碼器,GPT2只有解碼器
  2. T5的模型優勢是處理給定輸入,產出對應輸出的任務,如翻譯、對話、問答等
  3. GPT2的模型優勢是自由創作,如寫一篇短文
  4. 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 result
import 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 result
import 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 免費下載相關資料

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38594.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38594.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38594.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c++——::作用域、命名空間、using(聲明和編譯指令)

c 作用域和名字控制 一、::(雙冒號) 作用域 <::>運算符是一個作用域如果<::>前面什么都沒有加 代表是全局作用域 二、命名空間&#xff08;namespace) 1、namespace 本質是作用域,可以更好的控制標識符的作用域命名空間 就可以存放 變量 函數 類 結構體 … 2…

【kubernetes】在k8s集群環境上,部署kubesphere

部署kubesphere 學習于尚硅谷kubesphere課程 前置環境配置-部署默認存儲類型 這里使用nfs #所有節點安裝 yum install -y nfs-utils# 在master節點執行以下命令 echo "/nfs/data/ *(insecure,rw,sync,no_root_squash)" > /etc/exports # 執行以下命令&#xff…

QML與C++交互

目錄 1 QML獲取C的變量值 2 QML獲取C創建的自定義對象 3 QML發送信號綁定C端的槽 4 C端發送信號綁定qml端槽 5 C調用QML端函數 1 QML獲取C的變量值 QQmlApplicationEngine engine; 全局對象 上下文屬性 QQmlApplicationEngine engine; QQmlContext *context1 engine.…

flowable流程移植新項目前端問題匯總

flowable流程移植到新項目時&#xff0c;出現一些前端問題&#xff0c;匯總如下&#xff1a; PS F:\khxm\NBCIO_VUE> yarn run serve yarn run v1.21.1 $ vue-cli-service serve INFO Starting development server... ERROR Error: Vue packages version mismatch: -…

25 | 葡萄酒質量數據分析

基于kaggle提供的公開數據集,對全球葡萄酒分布情況和質量情況進行數據探索和分析 from kaggle: https://www.kaggle.com/zynicide/wine-reviews 分析思路: 0、數據準備 1、葡萄酒的種類 2、葡萄酒質量 3、葡萄酒價格 4、葡萄酒描述詞庫 5、品鑒師信息 6、總結 0、數據準備 …

學習Vue:組件的概念和優勢

在現代的前端開發中&#xff0c;組件化開發是一種重要的方法&#xff0c;它可以將復雜的應用程序拆分成多個獨立的、可復用的組件。Vue.js 是一個流行的前端框架&#xff0c;它支持組件化開發&#xff0c;讓開發者能夠更輕松地構建和維護復雜的用戶界面。在本文中&#xff0c;我…

計算機組成部分

計算機的五大部件是什么&#xff1f;答案&#xff1a;計算機的五大部件是運算器&#xff0c;控制器&#xff0c;存儲器&#xff0c;輸入設備和輸出設備。 其中運算器和控制器合稱中央處理器&#xff0c;是計算機的核心部件&#xff1b; 存儲器是用來存儲程序指令和數據用的&am…

修改第三方組件默認樣式

深度選擇器 修改el-input的樣式&#xff1a; <el-input class"input-area"></el-input>查看DOM結構&#xff1a; 原本使用 /deep/ 但是可能不兼容 使用 :deep .input-area {:deep(.el-input__inner){background-color: blue;} }將 input 框背景色改為…

【Kubernetes】Kubernetes的Pod進階

Pod進階 一、資源限制和重啟策略1. 資源限制2. 資源單位2.1 CPU 資源單位2.2 內存 資源單位 3. 重啟策略&#xff08;restartPolicy&#xff09; 二、健康檢查的概念1. 健康檢查1.1 探針的三種規則1.2 Probe 支持三種檢查方法 2. 示例2.1 exec 方式2.2 httpGet 方式2.3 tcpSock…

臨床試驗三原則-對照、重復、隨機

臨床試驗必須遵循三個基本原則&#xff1a;對照、重復、隨機。 一、對照原則和對照的設置 核心觀點&#xff1a;有比較才有鑒別。 對照組和試驗組同質可比。 三臂試驗 安慰劑&#xff1a;試驗組&#xff1a;陽性對照組1&#xff1a;n&#xff1a;m&#xff08;n≥m&#xff…

FFmpeg常見命令行(五):FFmpeg濾鏡使用

前言 在Android音視頻開發中&#xff0c;網上知識點過于零碎&#xff0c;自學起來難度非常大&#xff0c;不過音視頻大牛Jhuster提出了《Android 音視頻從入門到提高 - 任務列表》&#xff0c;結合我自己的工作學習經歷&#xff0c;我準備寫一個音視頻系列blog。本文是音視頻系…

Nginx反向代理服務流式輸出設置

Nginx反向代理服務流式輸出設置 1.問題場景 提問&#xff1a;為什么我部署的服務沒有流式響應 最近在重構原有的GPT項目時&#xff0c;遇到gpt回答速度很慢的現象。在使用流式輸出的接口時&#xff0c;接口響應速度居然還是達到了30s以上。 2.現象分析 分析現象我發現&…

Leetcode鏈表篇 Day3

.24. 兩兩交換鏈表中的節點 - 力扣&#xff08;LeetCode&#xff09; 1.構建虛擬結點 2.兩兩一組&#xff0c;前繼結點一定在兩兩的前面 3.保存結點1和結點3 19. 刪除鏈表的倒數第 N 個結點 - 力扣&#xff08;LeetCode&#xff09; 1.雙指針&#xff1a;快慢指針 兩個指針的差…

新能源汽車需要檢測哪些項目

截至2022年底&#xff0c;中國新能源車保有量達1310萬輛&#xff0c;其中純電動汽車保有量1045萬輛。為把好新能源汽車安全關&#xff0c;我國新能源汽車除了完善的強制性產品認證型式實驗外&#xff0c;還建立了“車企-地方-國家”逐級上報的三級監管體系實行新能源汽車全生命…

2023.8.14論文閱讀

文章目錄 ESPNet: Efficient Spatial Pyramid of Dilated Convolutions for Semantic Segmentation摘要本文方法實驗結果 DeepFusion: Lidar-Camera Deep Fusion for Multi-Modal 3D Object Detection摘要本文方法實驗結果 ESPNet: Efficient Spatial Pyramid of Dilated Convo…

vue 路由地址把#去掉

在路由對象里邊添加history模式就不顯示# mode:history // 4.通過規則創建對象 const router new VueRouter({routes,// 默認模式為hash 帶# // history 不帶#mode:history })想把端口號8000換成其他的 比如我這樣的3000更換端口號教程

Android Framework 動態更新插拔設備節點執行權限

TF卡設備節點是插上之后動態添加&#xff0c;所以不能通過初始化設備節點權限來解決&#xff0c;需要監聽TF插入事件&#xff0c;在init.rc 監聽插入后動態更新設備節點執行權限 添加插拔TF卡監聽 frameworks/base/services/core/java/com/android/server/StorageManagerServic…

IL匯編ldc指令學習

ldc指令是把值送到棧上&#xff0c; 說明如下&#xff0c; ldc.i4 將所提供的int32類型的值作為int32推送到計算堆棧上&#xff1b; ldc.i4.0 將數值0作為int32推送到計算堆棧上&#xff1b; ... ldc.i4.8 將數值8作為int32推送到計算堆棧上&#xff1b; ldc.i4.m1 將數值-…

Stable Diffusion 告別復制關鍵詞,高質量提示詞自動生成插件

在使用SD時,我們經常會遇到心中無想法,或不知如何描述心中所想的圖像。有時由于提示詞的選擇不當,生成的圖片質量也不盡如人意。為此,我今天為大家推薦一個高質量的提示詞自動生成插件——One Button Prompt。 下面是他生成的一些樣圖。 文章目錄 插件安裝插件說明主菜單工…

用python繪制CDF圖

一、code import os.pathimport pandas as pd import numpy as np import matplotlib.pyplot as pltcsv_path r"XXX.csv" save_fig_path os.path.join(os.path.split(csv_path)[0], "metrics_cdf.png")# 從CSV讀取數據 data pd.read_csv(csv_path)[XXX…