ที่เก็บนี้มีซอร์สโค้ดและรูปแบบที่ผ่านการฝึกอบรมสำหรับรูปแบบการสร้างการตอบสนองการสนทนาขนาดใหญ่ ผลการประเมินผลของมนุษย์ระบุว่าการตอบสนองที่เกิดจากการโต้ตอบนั้นเทียบได้กับคุณภาพการตอบสนองของมนุษย์ภายใต้การทดสอบการสนทนาครั้งเดียว
ที่เก็บจะขึ้นอยู่กับการ HuggingFace Pytorch-Transformer และ OpenAI GPT-2 ที่มีสคริปต์การดึงข้อมูลรหัสการฝึกอบรมแบบจำลองและสื่อขนาดเล็ก (117m) สื่อ (345m) และจุดตรวจสอบรุ่นใหญ่ (762m)
โมเดลได้รับการฝึกฝนในบทสนทนาหลายครั้ง 147m จากเธรดการสนทนา Reddit รุ่นที่ใหญ่ที่สุดสามารถได้รับการฝึกฝนในหลายชั่วโมงในเครื่อง 8 V100 (อย่างไรก็ตามไม่จำเป็นต้องใช้) พร้อมการฝึกอบรมแบบกระจายและตัวเลือก FP16
สคริปต์รวมสามารถใช้ในการทำซ้ำผลลัพธ์ของความท้าทายในการสร้างบทสนทนา DSTC-7 และชุดข้อมูลการอ้างอิงหลายครั้ง 6K ที่สร้างขึ้นจากข้อมูล Reddit
หน้าเว็บโครงการ: https://www.microsoft.com/en-us/research/project/large-scale-pretraining-for-response-generation/
กระดาษ Arxiv: https://arxiv.org/abs/1911.00536
(อัปเดต 07/09/2022) การเปลี่ยนแปลงบน files.pushshift.io/reddit Server ทำให้ไปป์ไลน์การสร้างข้อมูลของเราแตก ปัญหาเหล่านี้ได้รับการแก้ไขแล้วและขั้นตอนที่อธิบายไว้ในส่วนย่อยการเตรียมข้อมูลด้านล่างควรทำงานอีกครั้ง ข้อมูลถูกสร้างขึ้นในเวลาประมาณ 10 ชั่วโมงด้วย 8 กระบวนการ ( -j 8 ) และพื้นที่ดิสก์ชั่วคราว 800GB เป็นสิ่งจำเป็น
(อัปเดต 06/23/2021) เราได้เปิดตัว Dialogpt (retgen) เวอร์ชันการเรียกคืน
(อัปเดต 05/20/2021) การแนะนำวิดีโอที่ยอดเยี่ยมบน YouTube สำหรับบทสนทนาโดย Prakhar Mishra
(อัปเดต 03/31/2021) การสาธิตบุคคลที่สามโดย AK391 โดยใช้การสาธิต web gradio
(อัปเดต 09/15/2020) ชุดกล่องโต้ตอบขนาดใหญ่ได้รับการเผยแพร่แล้ว!
Dialogpt Generation ได้รับการปรับปรุงโดยการรวมเข้ากับรูปแบบการจัดอันดับกล่องโต้ตอบล่าสุดของเรา Dialogrpt
(อัปเดต 07/08/2020) ชุดทดสอบ 6K Multi-Ref ได้รับการเผยแพร่แล้ว!
ในการสร้างข้อมูลให้เรียกใช้ demo.py และตั้งค่าตัวเลือกข้อมูลเป็น 'เต็ม' ชุดทดสอบ 6K multi-ref ที่สร้างขึ้นจะอยู่ที่
./data/test.refs.txt
(อัปเดต 03/10/2020) การ์ดรุ่นที่มีอยู่ใน Transformers HuggingFace!
โปรดตรวจสอบการ์ดโมเดลของเราในพื้นที่เก็บข้อมูล Transformers HuggingFace ด้วยรหัสหลายบรรทัดมันควรจะเป็นเรื่องที่ค่อนข้างตรงไปตรงมาในการเล่นกับบทสนทนาแบบโต้ตอบ
รุ่นเล็ก: https://huggingface.co/microsoft/dialogpt-small
รุ่นปานกลาง: https://huggingface.co/microsoft/dialogpt-medium
รุ่นใหญ่: https://huggingface.co/microsoft/dialogpt-large
(ใหม่) รูปแบบการจัดอันดับ: https://huggingface.co/microsoft/dialogrpt-umdown
(อัปเดต 01/06/2020) การใช้งานสคริปต์การถอดรหัสบุคคลที่สามบางอย่าง:
Dialogpt ได้รับการพัฒนาอย่างสมบูรณ์บน Ubuntu 16.04 และ - ขึ้นอยู่กับความพร้อมใช้งานของเรา - เราพยายามให้การสนับสนุนหากคุณประสบปัญหาการใช้รหัสในการกำหนดค่าเดียวกัน อย่างไรก็ตามเรา ไม่สามารถให้การสนับสนุนสำหรับการแจกแจงหรือระบบปฏิบัติการอื่น ๆ บางส่วนของรหัสอาจทำงานบนรสชาติ UNIX อื่น ๆ (MacOS, ระบบย่อย Windows สำหรับ Linux, Cygwin ฯลฯ ) แต่ขอแนะนำให้ใช้ Ubuntu สำหรับรหัสการฝึกอบรมหลัก
รหัสการฝึกอบรมสามารถทำงานบน CPU แต่อาจช้า เราขอแนะนำให้ใช้ GPU เพื่อฝึกอบรมและ finetune ทุกรุ่น ไม่มีขีด จำกัด น้อยที่สุดของจำนวน GPU อย่างไรก็ตามหากใช้รถไฟแบบกระจายสำหรับการกำหนดค่า GPU หลายครั้งการเพิ่มความเร็วเทียบกับจำนวน GPU นั้นจะเป็นเชิงเส้นย่อยประมาณ ในการจำลอง batchsize เดียวกันเมื่อใช้ GPU น้อยลงโปรดใช้ gradient_accumulation_steps ในการฝึกอบรมแบบจำลอง
รุ่น 117m และ 345m สามารถโหลดได้ใน GPU เดียวที่มีหน่วยความจำ 12G รุ่น 762M จะต้องใช้ GPU เดียวที่มีหน่วยความจำมากกว่า 16G สำหรับการฝึกอบรมที่มีประสิทธิภาพ ความเร็วในการฝึกอบรมสำหรับข้อมูลมาตรฐานด้วยอินสแตนซ์การฝึกอบรม 50m และ V100 GPU:
| n_gpu | เวลายุค (H) | โทเค็น/วินาที |
|---|---|---|
| 1 | 118 | 10847 |
| 2 | 62 | 20645 |
| 4 | 34 | 37647 |
| 8 | 18 | 71356 |
การปรับจูนจากโมเดลที่ได้รับการฝึกฝนของเราในชุดข้อมูลใหม่มักจะต้องใช้ 1-2 Epochs
เราสร้างตัวอย่างสคริปต์ demo.py เพื่อลดความยากลำบากในการปรับใช้ระบบนี้ demo.py มีไปป์ไลน์ของ การดาวน์โหลดแบบจำลอง การแยกข้อมูลการประมวลผลข้อมูลล่วงหน้าและการฝึกอบรมแบบจำลองผ่านชุดข้อมูลจำลองภายในหนึ่งคำสั่ง
โปรดใช้คำสั่งด้านล่างเพื่อโคลนติดตั้งข้อกำหนดและโหลดสภาพแวดล้อม conda (โปรดทราบว่าจำเป็นต้องมีชุดเครื่องมือนักพัฒนา Nvidia Cuda 10.0)::
sudo apt-get install -y make wget gzip bzip2 xz-utils zstd sedgit clone https://github.com/microsoft/DialoGPT.git
cd DialoGPT
conda env create -f LSP-linux.yml -n LSP
conda activate LSP หากคุณเรียกใช้สิ่งนี้บนสถาปัตยกรรมอื่นที่ไม่ใช่ Linux โปรดใช้ LSP-generic.yml แทน LSP-linux.yml แต่โปรดทราบว่าแบบทั่วไปไม่ได้ทดสอบในแพลตฟอร์มทั้งหมดดังนั้น stablity ไม่สามารถเป็น gauranteed ได้ หากต้องการใช้การฝึกอบรม FP16 โปรดติดตั้ง Apex โดยใช้คำสั่งด้านล่าง
conda activate LSP
git clone https://github.com/NVIDIA/apex
cd apex
git reset --hard 3d01e4a0a188cc8df54bc6e44cf5eb40ff6b4cc5
pip install -v --no-cache-dir --global-option= " --cpp_ext " --global-option= " --cuda_ext " .
python3.6 demo.pyในการเริ่มต้นให้ติดตั้ง Docker และ Nvidia-Docker จาก repos อย่างเป็นทางการของพวกเขา สภาพแวดล้อมภาพสำหรับการเรียกใช้รหัสสามารถโหลดได้ด้านล่าง:
Nvidia-Docker v2 -
$ docker run --gpus all --ipc=host --rm -it -v $PWD :/workspace --network=host icaruszyz/large-scale-training:dialogpt bashNVIDIA-DOCKER V1 -
$ nvidia-docker --rm -it -v $PWD :/workspace --network=host icaruszyz/large-scale-training:dialogpt bashภายในคอนเทนเนอร์ Docker Run
python demo.py ส่วนนี้อธิบายส่วนประกอบทั้งหมดใน demo.py
ก่อนที่จะเรียกใช้ demo.py คุณสามารถตั้ง ค่า data_folder (ค่าเริ่มต้น ./models models) ใน demo.py เป็นสถานที่ที่คุณต้องการดาวน์โหลดข้อมูลทั้งหมดและรุ่นที่ผ่านการฝึกอบรม/ปรับแต่ง จากนั้นก็วิ่ง
python demo.pyถึง
โปรดทราบว่าโดยค่าเริ่มต้น demo.py จะใช้ข้อมูลจำลองโปรดระบุข้อมูลการฝึกอบรม reddit โดยใช้ตัวเลือก --data ข้อมูล มีสามตัวเลือก: dummy , small และ full
python demo.py --data small
python demo.py --data fullข้อมูล Reddit ขนาดเล็กอยู่ที่ประมาณ 140MB และข้อมูล Reddit เต็มรูปแบบมากกว่า 27GB คุณสามารถเตรียมกาแฟหนึ่งถ้วยเมื่อประมวลผลด้วยข้อมูล Reddit เต็มรูปแบบเพราะ ใช้เวลานาน !
ในการสร้างข้อมูลชุดการทดสอบแบบหลายรีฟ 6K ให้ใช้งาน demo.py และตั้งค่าตัวเลือกข้อมูลเป็น 'เต็ม' การสร้างจะอยู่ที่
./data/test.refs.txt
รุ่นที่ผ่านการฝึกอบรมและปรับแต่งมีให้บริการใน Azure Blobstorage โปรดเรียกใช้/ดู demo.py สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการดาวน์โหลด/ใช้โมเดลเหล่านั้น หรือคุณสามารถดาวน์โหลดได้โดยตรงโดยใช้ลิงก์ใน demo_utils.py
ขั้นแรกให้ใช้ prepare4db.sh เพื่อแปลงไฟล์ข้อมูล TSV เป็นรูปแบบที่ถูกต้องซึ่งสคริปต์ต่อไปนี้สามารถรับรู้ได้ ข้อมูล TrainIG จะต้องถูกประมวลผลลงในไฟล์ฐานข้อมูลที่มีคำสั่งด้านล่าง:
python prepro.py --corpus $DATA_PATH สคริปต์การฝึกอบรมสามารถใช้ใน GPU เดี่ยวหรือการตั้งค่า GPU หลายครั้ง (การฝึกอบรมแบบกระจายผ่าน GPU หลายตัวภายในโหนดเดียว):
python ./LSP_train.py # Single GPU training
python -m torch.distributed.launch --nproc_per_node=8 ./LSP_train.py # Training on 8 GPUsสคริปต์การฝึกอบรมยอมรับข้อโต้แย้งหลายประการเพื่อปรับแต่งการฝึกอบรม:
| การโต้แย้ง | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| max_seq_length | int | 128 | จำนวนโทเค็นสูงสุดสำหรับแต่ละอินสแตนซ์การฝึกอบรม |
| train_input_file | str | "" | เส้นทางของชุดข้อมูลการฝึกอบรมในรูปแบบ .DB |
| eval_input_file | str | "" | เส้นทางของการตรวจสอบความถูกต้องในรูปแบบ TSV |
| ดำเนินการต่อ _ จาก | int | 0 | กลับมาฝึกอบรมอีกครั้งหลังจากจำนวนขั้นตอนที่ระบุ |
| FP16 | boolean | True | ไม่ว่าจะใช้จุดลอยตัว 16 บิตสำหรับการฝึกอบรมแบบจำลอง |
| train_batch_size | int | 4 | ขนาดชุดสำหรับการฝึกอบรม |
| valid_batch_size | int | 4 | ขนาดแบทช์สำหรับการตรวจสอบ |
| การไล่ระดับ | int | 2 | สะสมการไล่ระดับสีในหลายขั้นตอน |
| การเรียนรู้ _Rate | float | 1e-5 | อัตราการเรียนรู้ |
| LR_SCHEDULE | str | noam | ตารางอัตราการเรียนรู้สามารถเลือกได้จาก [ noam , noamwd , BERT , None ] |
| num_optim_steps | int | 1000000 | จำนวนขั้นตอนการเพิ่มประสิทธิภาพการฝึกอบรม |
| no_token_id | boolean | True | หากตั้งค่าจริงให้ใช้การฝังประเภทโทเค็นทั้งหมด Zeros |
ในระหว่างการฝึกอบรมไฟล์บันทึกสองไฟล์จะได้รับการอัปเดต train_log.txt และ eval_log.txt มีสถิติการสูญเสียแบบจำลองความงุนงงและความเร็วในการฝึกอบรม (โทเค็น/วินาที) สำหรับการฝึกอบรมและชุด Dev
ไฟล์บันทึกและจุดตรวจสอบโมเดลที่บันทึกไว้สามารถพบได้ใน ./models/output_model models/Output_Model
เราทราบว่าแม้จะมีชุดข้อมูล reddit ที่กรองอย่างถูกต้องบางครั้งโมเดลของเรายังคงสามารถสร้างการตอบสนองที่เป็นพิษ/ไม่เหมาะสมในระดับปานกลาง ด้วยเหตุนี้เราจึงไม่สามารถให้สคริปต์การถอดรหัสในเวลานี้ (การสาธิตสดและการเข้าถึงสคริปต์การถอดรหัสเป็นคำเชิญเท่านั้น) ขณะนี้เรายังคงทำงานเกี่ยวกับวิธีการถอดรหัสที่ควบคุมเพื่อป้องกันระบบนี้จากการสร้างพิษ โปรดติดตามความคืบหน้า
ดูปัญหา #3 และการอภิปราย Reddit สำหรับการอภิปรายบางอย่างเกี่ยวกับวิธีการถอดรหัสบุคคลที่สาม
ดูด้านล่างสำหรับวิธีการถอดรหัสของบุคคลที่สาม:
เราเปิดตัวโมเดลที่ปรับแต่งได้ 6 แบบซึ่งสามารถปรับแต่งได้ดีขึ้นในชุดข้อมูลที่ผู้ใช้ที่ได้รับการกำหนดทรัพยากรต่ำ พารามิเตอร์ทั้งหมดในรุ่นเหล่านี้มีตั้งแต่ 117m ถึง 762m ตามขนาดรุ่น OpenAI GPT-2
| แบบอย่าง | ปรับแต่งจาก GPT-2 | ได้รับการฝึกฝนตั้งแต่เริ่มต้น |
|---|---|---|
| รุ่น Dialogpt 762M | [ลิงก์] [การ์ด Modelface HuggingFace] | [ลิงก์] |
| Dialogpt 345m รุ่น | [ลิงก์] [การ์ด Modelface HuggingFace] | [ลิงก์] |
| Dialogpt 117m รุ่น | [ลิงก์] [การ์ด Modelface HuggingFace] | [ลิงก์] |
| DIALOGPT 345M รุ่น (ย้อนกลับสำหรับ MMI) | การเชื่อมโยง | - |
| Dialogrpt (รุ่นการจัดอันดับ ใหม่ ) | การเชื่อมโยง | - |
ไฟล์โมเดลสามารถโหลดได้อย่างตรงไปตรงมาเป็นจุดตรวจ GPT-2 รุ่นจาก Transformers ของ HuggingFace คุณสามารถค้นหาไฟล์การกำหนดค่าที่สอดคล้องกัน ( merges.txt , config.json , vocab.json ) ใน Repo ของ Dialogpt ใน ./configs/* *
แบบจำลองย้อนกลับกำลังทำนายแหล่งที่มาจากเป้าหมาย รุ่นนี้ใช้สำหรับการแปล MMI
แบบจำลอง Dialogrpt แบบจำลองการจัดอันดับที่เสนอเมื่อเร็ว ๆ นี้ของเราที่ใช้ในการทำนายข้อเสนอแนะของมนุษย์ (upvotes, ตอบกลับ) ของการตอบสนอง โมเดลเหล่านี้สามารถใช้เพื่อปรับปรุงคุณภาพการสร้างบทสนทนา (ดูรายละเอียดกระดาษ EMNLP ของเรา)
ขั้นตอนแรกในการฝึกอบรมแบบจำลองเต็มรูปแบบคือการสร้างชุดข้อมูล Reddit 27GB ดังกล่าวข้างต้น สิ่งนี้เกี่ยวข้องกับการดาวน์โหลดการส่ง Reddit เต็มรูปแบบและความคิดเห็นที่ถ่ายโอนข้อมูลจาก https://files.pushshift.io/reddit และสร้างไฟล์ระดับกลางซึ่งโดยรวมต้องใช้ พื้นที่ดิสก์ท้องถิ่น 700GB การดาวน์โหลดและประมวลผลข้อมูลทั้งหมดต้องใช้เวลาประมาณ 1-2 วันขึ้นอยู่กับการคำนวณ capabilties (CPU) ของคุณ (เช่น ~ 24 ชั่วโมงด้วย 8 คอร์ในคอมพิวเตอร์ล่าสุด) สมมติว่าคุณเรียกใช้ขั้นตอนการตั้งค่าและการติดตั้งด้านบน (CONDA เปิดใช้งาน LSP ฯลฯ ) คุณสามารถสร้างชุดข้อมูลเต็มรูปแบบได้โดยเรียกใช้:
python demo.py --data full
หรือ
cd reddit_extractor; SIZE=full make -j 8; cd ..
คำสั่งเดิมเรียกว่าหลังดังนั้นทั้งสองวิธีจะเทียบเท่า เราขอแนะนำอดีตเนื่องจากหลังส่วนใหญ่มีประโยชน์หากคุณพบปัญหาใด ๆ หรือต้องการปรับแต่งอาร์กิวเมนต์ใด ๆ (เช่นคำสั่ง make ช่วยให้คุณสร้างชุดย่อยของข้อมูลเท่านั้น) โปรดทราบว่าขั้นตอนการดาวน์โหลดอาจเป็นข้อผิดพลาดได้ง่ายขึ้นตัวอย่างเช่นตามตำแหน่งทางภูมิศาสตร์ของคุณ (ไฟร์วอลล์ ฯลฯ ) หากคำสั่งข้างต้นไม่สามารถสร้าง data/train.tsv หรือหากไฟล์นั้นไม่ได้อยู่ใกล้กับ 27GB ก็หมายความว่ามีบางอย่างผิดปกติ ในกรณีนี้คุณอาจต้องการตรวจสอบ reddit_extractor/wget-log และ reddit_extractor/logs/*.log ข้อผิดพลาดที่ชัดเจน (เช่นไม่สามารถดาวน์โหลดจาก pushshift.io) หากข้อความแสดงข้อผิดพลาดไม่สมเหตุสมผลสำหรับคุณอย่าลังเลที่จะติดต่อเรา ถ้าเป็นเช่นนั้นโปรดตรวจสอบข้อความแสดงข้อผิดพลาดใด ๆ ที่รวบรวมจากไฟล์บันทึกเหล่านี้
สถิติข้อมูลการฝึกอบรม: ไฟล์ TSV การฝึกอบรมที่สร้างขึ้นควรมีประมาณ 26.8 GB ที่ไม่ได้บีบอัดโดยมีอินสแตนซ์การฝึกอบรม 146.8m โทเค็นแหล่งที่มา 3.87b และโทเค็นเป้าหมาย 2.14B (รวมถึงน้ำหนักระดับ 0/1) ไฟล์ train.tsv ที่ได้ควรมี 146,846,215 บรรทัด
เราขอแนะนำให้สร้างข้อมูลข้างต้นโดยใช้ demo.py --data full เนื่องจาก (1) สร้างข้อมูล (2) แปลงเป็นรูปแบบ db และ (3) ฝึกอบรมแบบจำลองโดยใช้ python LSP_train.py โปรดแก้ไข demo.py โดยตรงหากคุณต้องการปรับแต่ง HyperParameters ใด ๆ
แบบจำลองของเราได้รับผลลัพธ์ที่ล้ำสมัยในงานสร้างการตอบสนองการท้าทาย DSTC-7
| การทดลอง | NIST2 | NIST4 | bleu2 | bleu4 | ดาวตก | ent-4 | dist-1 | dist-2 | avg. เลิร์น |
|---|---|---|---|---|---|---|---|---|---|
| การตอบสนองของมนุษย์ | 2.62 | 2.65 | 12.35% | 3.13% | 8.31% | 10.45 | 16.66% | 67.01% | 18.8 |
| ผู้ชนะ DSTC-7 | 2.51 | 2.52 | 14.35% | 1.83% | 8.07% | 9.03 | 10.89% | 32.49% | 15.1 |
| Dialogpt 345m | 2.80 | 2.82 | 14.16% | 2.31% | 8.51% | 10.08 | 9.13% | 39.73% | 16.9 |
| Dialogpt 345m (BS) | 2.92 | 2.97 | 19.18% | 6.05% | 9.29% | 9.57 | 15.73% | 51.03% | 14.2 |
ในกรณีที่ ENT แสดงถึงคะแนนเอนโทรปีและ DIST แสดงถึงคะแนนที่แตกต่างกัน สำหรับตัวชี้วัดทั้งหมดยกเว้นความยาวเฉลี่ยที่ใหญ่กว่าจะดีกว่า
โปรดทราบว่าการประเมินอัตโนมัติที่เหนือกว่าเมื่อเปรียบเทียบกับการตอบสนองของมนุษย์ไม่จำเป็นหมายความว่าแบบจำลองของเราบรรลุความเท่าเทียมกันของมนุษย์ โปรดตรวจสอบบทความของเราสำหรับการวิเคราะห์โดยละเอียดเพิ่มเติม
ในการปรับแต่งรูปแบบการโต้ตอบ 345M บนข้อมูล DSTC-7 Challenge บนเซิร์ฟเวอร์ที่มี 8 V100 GPU โปรดเรียกใช้คำสั่งต่อไปนี้ (ข้อมูล DSTC สามารถดูได้ที่ DSTC-7 repo):
python3 -m torch.distributed.launch --nproc_per_node=8 train_LSP.py --init_checkpoint ./models/medium/medium_ft.pkl --train_input_file ./data/DSTC_train.db --eval_input_file ./data/DSTC_valid.tsv --model_name_or_path ./model/medium/ --learning_rate 1e-4 --train_batch_size 64 --eval_batch_size 64 --no_token_idแบบจำลองที่ผ่านการฝึกอบรมสามารถพบได้ที่ DSTC Medium Model
โปรด ดาวน์โหลด แพ็คเกจที่สามต่อไปนี้และบันทึกลงในโฟลเดอร์ว่างเปล่า 3rdparty :
cpan install ): XML: Twig, Sort: Naturally และ String: Util โปรดติดตาม DSTC-7 อย่างเป็นทางการ repo เพื่อแยกข้อมูลและวาง data-official-test/test.refs.txt ลงใน ./dstc/data/ data/ โฟลเดอร์
เรียกใช้สคริปต์การสกัดด้านล่างเพื่อสร้างไฟล์สมมติฐานการตอบสนองของมนุษย์ human.resp.txt :
python extract_human.pyในที่สุดเพื่อทำซ้ำผลลัพธ์ของสมมติฐานของมนุษย์ในชุดข้อมูล DSTC โปรดเรียกใช้คำสั่งต่อไปนี้ภายใต้โฟลเดอร์ repo:
python batch_eval.py ผลการประเมินจะถูกสร้างขึ้นในโฟลเดอร์ ./dstc/eval/ eval/
เราทดสอบชุดข้อมูล Multi-Ref 6K จาก Reddit ผลลัพธ์จะสรุปไว้ด้านล่าง
| การทดลอง | NIST2 | NIST4 | bleu2 | bleu4 | ดาวตก | ent-4 | dist-1 | dist-2 | avg. เลิร์น |
|---|---|---|---|---|---|---|---|---|---|
| การตอบสนองของมนุษย์ | 3.41 | 4.25 | 17.90% | 7.48% | 10.64% | 11 | 14.50% | 63.00% | 13.1 |
| DIALOGPT 117M | 2.39 | 2.41 | 10.54% | 1.55% | 7.53% | 10.78 | 8.60% | 39.90% | 12.8 |
| Dialogpt 345m | 3 | 3.06 | 16.96% | 4.56% | 9.81% | 9.13 | 6.80% | 26.30% | 12.2 |
| DIALOGPT 762M | 2.84 | 2.9 | 18.66% | 5.25% | 9.66% | 9.72 | 7.76% | 29.93% | 11.2 |
| Dialogpt 345m (BS) | 3.4 | 3.5 | 21.76% | 7.92% | 10.74% | 10.48 | 12.38% | 48.74% | 11.3 |
| Dialogpt 345m (w/mmi) | 3.28 | 3.33 | 15.68% | 3.94% | 11.23% | 11.25 | 9.39% | 45.55% | 17.2 |
เราดำเนินการประเมินผลของมนุษย์ต่อไป (ตัวอย่าง 6k สำหรับแต่ละวิธีแต่ละตัวอย่างจะถูกประเมินโดยผู้พิพากษามนุษย์ 3 คน) ผลลัพธ์แสดงหลักฐานที่ชัดเจนว่าคุณภาพของรุ่นของเราคือการเข้าใกล้คุณภาพของการตอบสนองของมนุษย์ที่แท้จริงภายใต้การทดสอบทัวริงที่ไม่โต้ตอบนี้:
ความเกี่ยวข้อง : A และ B ซึ่งมีความเกี่ยวข้องกับพรอมต์แหล่งที่มามากกว่า
| ระบบ A | ชัยชนะ (%) | ความสัมพันธ์ (%) | B ชนะ (%) | ระบบ B |
|---|---|---|---|---|
| Dialogpt 345m | 2671 (45%) | 513 (9%) | 2816 (47%) | การตอบสนองของมนุษย์ |
| Dialogpt 345m | 3281 (72%) | 394 (9%) | 882 (19%) | บุคลิก |
| DIALOGPT 345M W/ MMI | 2871 (48%) | 522 (9%) | 2607 (43%) | การตอบสนองของมนุษย์ |
ข้อมูล : A และ B ซึ่งเป็นสิ่งที่พอใจและให้ข้อมูลมากกว่า
| ระบบ A | ชัยชนะ (%) | ความสัมพันธ์ (%) | B ชนะ (%) | ระบบ B |
|---|---|---|---|---|
| Dialogpt 345m | 2722 (45%) | 234 (4%) | 3044 (51%) | การตอบสนองของมนุษย์ |
| Dialogpt 345m | 3490 (77%) | 206 (5%) | 861 (19%) | บุคลิก |
| DIALOGPT 345M W/ MMI | 3011 (50%) | 234 (4%) | 2755 (46%) | การตอบสนองของมนุษย์ |
เหมือนมนุษย์ : A และ B ซึ่งคุณคิดว่ามีแนวโน้มที่จะถูกสร้างขึ้นโดยมนุษย์
| ระบบ A | ชัยชนะ (%) | ความสัมพันธ์ (%) | B ชนะ (%) | ระบบ B |
|---|---|---|---|---|
| Dialogpt 345m | 2716 (45%) | 263 (4%) | 3021 (50%) | การตอบสนองของมนุษย์ |
| Dialogpt 345m | 3462 (76%) | 196 (4%) | 899 (20%) | บุคลิก |
| DIALOGPT 345M W/ MMI | 2978 (50%) | 241 (4%) | 2781 (46%) | การตอบสนองของมนุษย์ |
โปรดดูรายละเอียดทั้งหมดในกระดาษ Arxiv ของเรา
| บทบาท | การตอบสนอง |
|---|---|
| ผู้ใช้ | เงินซื้อความสุขหรือไม่? |
| บอท | ขึ้นอยู่กับว่าคุณใช้จ่ายเงินเท่าไหร่ |
| ผู้ใช้ | วิธีที่ดีที่สุดในการซื้อความสุขคืออะไร? |
| บอท | คุณต้องเป็นเศรษฐีในช่วงต้นยุค 20 ของคุณจากนั้นคุณก็มีความสุข |
| ผู้ใช้ | มันยากมาก! |
| บอท | คุณไม่รู้ว่ามันยากแค่ไหนที่จะเป็นเศรษฐีและมีความสุข มีเหตุผลที่คนรวยมีเงินจำนวนมาก |
| บทบาท | การตอบสนอง |
|---|---|
| ผู้ใช้ | ความหมายของชีวิตคืออะไร? |
| บอท | ความหมายคือการอยู่กับครอบครัวและเพื่อนของคุณ |
| บอท | ฉันจะเดาว่านั่นหมายความว่าพ่อแม่และเพื่อนของคุณรักคุณ นั่นคือความหมายที่ฉันเชื่อ |
| บอท | ฉันคิดว่าความหมายคือการทำให้แน่ใจว่าคุณมีชีวิตอยู่เมื่อคุณตาย ดังนั้นคุณจะอยู่กับครอบครัวเพื่อนและตัวคุณเอง |
| บอท | ไม่ใช่ แต่ขอบคุณที่พยายามช่วย |
| ผู้ใช้ | บอท |
|---|---|
| ใครคือประธานาธิบดีคนแรกของสหรัฐอเมริกา | จอร์จวอชิงตัน |
| จุดเดือดของน้ำคืออะไร? | ฉันคิดว่ามันเกี่ยวกับ 212 F. |
| อันไหนใหญ่กว่าดวงอาทิตย์หรือดวงจันทร์? | ดวงอาทิตย์ |
| สัตว์ชนิดใดมีแถบสีดำและสีขาว? | แมวลายสีดำและสีขาว |
| ผู้ใช้ | บอท |
|---|---|
| สงครามการค้าระหว่างจีนและสหรัฐอเมริกายังคงเกิดขึ้น | ฉันแน่ใจว่ารัฐบาลจีนและคุณ s. จะดีกับสิ่งนั้นตราบใดที่พวกเขาเก็บแขนไว้บนโต๊ะและเงินไหล |
| ใครชนะการแข่งขันฟุตบอลโลกในปี 2561? | ฉันเชื่อว่าเยอรมนี |
| Titan RTX ของ Nvidia นั้นดีจริงๆ | ฉันมีการ์ดใบนี้และฉันรักมัน ไม่มีการร้องเรียน |
| ปอร์เช่สามารถเอาชนะเทสลาด้วย Taycan EV ใหม่ได้หรือไม่? | ฉันไม่คิดอย่างนั้น เทสลามีพลังมากกว่าปอร์เช่ |
| ผู้ใช้ | บอท |
|---|---|
| ความหมายของชีวิตที่ดีคืออะไร? | ฉันคิดว่ามันเป็นสิ่งที่เราทุกคนเชื่อมต่อกับชีวิตที่ผ่านมาของเราและความหมายของชีวิตคือการใช้ชีวิตตามที่คุณต้องการและวิธีที่คุณต้องการ |
| สิ่งที่สำคัญกว่า - การประสบความสำเร็จหรือมีความสุข? | การประสบความสำเร็จนั้นไม่มีที่สิ้นสุด การมีความสุขเป็นสิ่งเดียวที่สำคัญ |
| สันติภาพเป็นวิธีเดียวที่จะหยุดสงครามหรือไม่? | ไม่ใช่ถ้าโลกไม่เต็มใจที่จะทำงานร่วมกับคุณ สันติภาพเป็นเป้าหมายสูงสุด แต่ความสงบต้องการมากกว่านั้น |
| ผู้คนควรมีอิสระมากแค่ไหน? | เสรีภาพในปริมาณที่เหมาะสมคืออิสระที่จะทำตามที่คุณต้องการตราบใดที่คุณไม่ทำร้ายผู้คนหรือทรัพย์สิน |
| ผู้ใช้ | บอท |
|---|---|
| คุณคิดอย่างไรกับ Repo Dialogpt? | มันค่อนข้างดี แต่มันง่ายมากที่จะหาบั๊ก |
กรุณาเริ่มปัญหาหากคุณเห็นอะไร :)
การสาธิตสดและการถอดรหัสการเข้าถึงสคริปต์เป็นไปตามคำเชิญเท่านั้น โปรดติดตามความคืบหน้าสำหรับการเปิดตัวเต็มรูปแบบ
retgen: https://github.com/dreasysnail/retgen การเรียกคืนการตอบโต้/สายดินและต่อสายดินและอื่น ๆ Retgen เป็นกรอบการฝึกอบรมร่วมที่เพิ่มประสิทธิภาพการแก้ไขเส้นทางที่หนาแน่นและเครื่องกำเนิดข้อความที่มีความรู้ในแบบครบวงจร
Microsoft Icecaps: https://github.com/microsoft/icecaps
ในฐานะที่เก็บ orthogonal ของโครงการนี้ Microsoft Icecaps เป็นชุดเครื่องมือโอเพนซอร์ซ (ใน TensorFlow) สำหรับการสร้างระบบการสนทนาระบบประสาท ICECAPS ให้บริการเครื่องมือต่าง ๆ จากการสร้างแบบจำลองการสนทนาล่าสุดและวรรณกรรม NLP ทั่วไปภายในกระบวนทัศน์ที่ยืดหยุ่นซึ่งช่วยให้การตั้งค่าการเรียนรู้แบบหลายงานที่ซับซ้อน
pretrained unilm: https://github.com/microsoft/unilm
mt-dnn: https://github.com/namisan/mt-dnn
คู่สนทนาภาษาจีนโดย Yangjianxin1 https://github.com/yangjianxin1/gpt2-chitchat เราดีใจที่เห็นว่ากลยุทธ์ MMI ที่เราใช้ใน Dialogpt ได้ปรับปรุงประสิทธิภาพสำหรับโครงการนี้เช่นกัน!
กรุณาติดต่อ [email protected] หากคุณมีคำถาม/คำแนะนำใด ๆ อย่างไรก็ตามการตอบสนองจะเป็นระยะ ๆ โปรดคาดหวังความล่าช้า
โครงการนี้ยินดีต้อนรับการมีส่วนร่วมและข้อเสนอแนะ การมีส่วนร่วมส่วนใหญ่กำหนดให้คุณต้องยอมรับข้อตกลงใบอนุญาตผู้มีส่วนร่วม (CLA) ประกาศว่าคุณมีสิทธิ์และทำจริงให้สิทธิ์ในการใช้การบริจาคของคุณ สำหรับรายละเอียดเยี่ยมชม https://cla.opensource.microsoft.com
เมื่อคุณส่งคำขอดึง CLA บอทจะพิจารณาโดยอัตโนมัติว่าคุณจำเป็นต้องให้ CLA และตกแต่ง PR อย่างเหมาะสม (เช่นการตรวจสอบสถานะแสดงความคิดเห็น) เพียงทำตามคำแนะนำที่จัดทำโดยบอท คุณจะต้องทำสิ่งนี้เพียงครั้งเดียวใน repos ทั้งหมดโดยใช้ CLA ของเรา
โครงการนี้ได้นำรหัสการดำเนินงานของ Microsoft โอเพ่นซอร์สมาใช้ สำหรับข้อมูลเพิ่มเติมโปรดดูจรรยาบรรณคำถามที่พบบ่อยหรือติดต่อ [email protected] พร้อมคำถามหรือความคิดเห็นเพิ่มเติมใด ๆ
ที่เก็บนี้มีวัตถุประสงค์เพื่ออำนวยความสะดวกในการวิจัยในการเตรียมการขนาดใหญ่สำหรับข้อมูลการสนทนา ชุดเครื่องมือนี้มีเพียงส่วนหนึ่งของเครื่องจักรการสร้างแบบจำลองที่จำเป็นในการสร้างไฟล์น้ำหนักแบบจำลองในกล่องโต้ตอบที่ใช้งานจริง ด้วยตัวเองโมเดลนี้ให้ข้อมูลเกี่ยวกับน้ำหนักของข้อความที่หลากหลายเท่านั้น เพื่อให้นักวิจัยใช้มันจริงพวกเขาจะต้องนำข้อมูลการสนทนาของตนเองและถอดรหัสการสร้างการตอบสนองจากระบบที่ผ่านการฝึกอบรม Microsoft จะไม่รับผิดชอบต่อรุ่นใด ๆ จากการใช้ประโยชน์จากบุคคลที่สามของระบบ pretrained
หากคุณใช้รหัสนี้ในการวิจัยของคุณคุณสามารถอ้างอิงกระดาษ Arxiv ของเรา:
@inproceedings{zhang2019dialogpt,
title={DialoGPT: Large-Scale Generative Pre-training for Conversational Response Generation},
author={Yizhe Zhang and Siqi Sun and Michel Galley and Yen-Chun Chen and Chris Brockett and Xiang Gao and Jianfeng Gao and Jingjing Liu and Bill Dolan},
year={2020},
booktitle={ACL, system demonstration}
}