การปรับตัวของนักปฏิรูป: หม้อแปลงที่มีประสิทธิภาพสำหรับงานข้อความเป็นคำพูด
โครงการนี้มี:
เรามีวัตถุประสงค์เพื่อสร้างโมเดลข้อความที่ล้ำสมัยอย่างมีประสิทธิภาพมากขึ้นโดยการแทนที่สถาปัตยกรรมหม้อแปลงด้วยการปรับให้เหมาะสมที่เสนอในกระดาษปฏิรูปล่าสุด เราจะใช้มันเพื่อสร้างความลึกที่น่าเชื่อถือของโดนัลด์ทรัมป์ตามชุดข้อมูลที่กำหนดเองของสุนทรพจน์ของเขาสร้างขึ้นโดยเฉพาะเพื่อจุดประสงค์นี้
น่าเสียดายที่เราไม่สามารถสร้างผลลัพธ์ที่ตรงกับกระดาษจากกระดาษ Transformer TTS หลังจากทดลองใช้ชุดค่าผสมไฮเปอร์พารามิเตอร์มากกว่า 100 ชุดในช่วง 2 เดือน เราเชื่อว่าขนาดของแบบจำลองเป็นปัจจัยสำคัญที่นี่และฝึกอบรมหม้อแปลงสำหรับ TTS ที่ต้องการอย่างแท้จริงเพื่อลดการ overfitting เพื่อให้กระบวนการฝึกอบรมที่ยาวนานและมั่นคง (~ 1 สัปดาห์ของการฝึกอบรมเกี่ยวกับ RTX 2080TI)
นอกจากนี้การเข้าถึงการใช้งานดั้งเดิมของ Transformer TTS จะช่วยได้อย่างมาก
ในขณะที่นักปฏิรูปไม่ตรงกับความคาดหวังของเราการใช้ Squeezewave ตรงกับประสิทธิภาพของต้นฉบับโดยไม่ต้องสนับสนุน FP16
นอกจากนี้เรายังรวมถึง CLI สำหรับการฝึกอบรมและการอนุมาน (ดูส่วน การใช้งาน ) และข้อมูลทั้งหมดที่จำเป็นสำหรับการทำซ้ำการทดลอง (ดูส่วน การพัฒนา )
โครงการอยู่ภายใต้การปรับเปลี่ยนที่สำคัญรุ่นนี้ถูกทิ้งไว้ที่นี่เพื่อให้ความเป็นกันเองกับ expeirments ก่อนหน้าของเราและจะถูกย้ายในอนาคตอันใกล้
โครงการนี้เป็นแพ็คเกจ Python ปกติและสามารถติดตั้งได้โดยใช้ pip ตราบใดที่คุณมี Python 3.8 ขึ้นไป
ไปที่หน้าเผยแพร่เพื่อค้นหาคำแนะนำการติดตั้งสำหรับรุ่นล่าสุด
หลังจากการติดตั้งคุณสามารถเห็นคำสั่งที่มีอยู่โดยรัน:
python -m reformer_tts.cli --helpคำสั่งทั้งหมดดำเนินการโดยใช้ CLI ตัวอย่างเช่น:
python -m reformer_tts.cli train-vocoder พารามิเตอร์ส่วนใหญ่ (โดยเฉพาะอย่างยิ่งการฝึกอบรมพารามิเตอร์ทั้งหมด) จะถูกระบุผ่านอาร์กิวเมนต์ --config ไปยัง cli (ซึ่งไปก่อนคำสั่งที่คุณต้องการเรียกใช้) เช่น:
python -m reformer_tts.cli -c /path/to/your/config.yml train-vocoder ค่าเริ่มต้นสามารถพบได้ใน reformer_tts.config.Config (และฟิลด์)
ขอบคุณชุมชน Conda-Forge เราสามารถติดตั้งแพ็คเกจทั้งหมด (รวมถึงไบนารีที่จำเป็นเช่น ffmpeg ) โดยใช้คำสั่งเดียว
conda env create -f environment.ymlPython>=3.8 : which python
python --versionpip install -r requirements.txt ตรวจสอบให้แน่ใจว่าคุณมี ffmpeg>=3.4,<4.0 ติดตั้ง (คำแนะนำการติดตั้ง)
สำหรับการฝึกอบรมให้แน่ใจว่าคุณติดตั้งไดรเวอร์ CUDA และ GPU (สำหรับรายละเอียดดูคำแนะนำในเว็บไซต์ Pytorch)
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/service-account-credentials.jsonหมายเหตุ: หากคุณต้องการอ่าน acces (สำหรับการทำซ้ำ) คุณไม่จำเป็นต้องดำเนินการขั้นตอนที่ 1
dvc pullในการทำเช่นนี้คุณสามารถเรียกใช้การทดสอบโครงการ:
python -m pytest --pyargs reformer_ttsการทดสอบทั้งหมดควรทำงานกับ CPU และ GPU และอาจใช้เวลาถึงหนึ่งนาทีจึงจะเสร็จสมบูรณ์
อย่าลืมผ่าน --pyargs reformer_tts ถึง pytest มิฉะนั้นจะค้นหาไดเรกทอรีข้อมูลสำหรับการทดสอบ
Python>=3.8requirements.txt และใน environment.ymlreformer_tts/cli.py , เรียกใช้ python reformer_tts/cli.py --help สำหรับการอ้างอิงโดยละเอียดการกำหนดค่าถูกจัดระเบียบในโครงสร้าง Dataclass:
config.py โดยที่พารามิเตอร์และค่า เริ่มต้น ถูกกำหนด - ตัวอย่างเช่นพารามิเตอร์การกำหนดค่าชุดข้อมูลจะถูกระบุใน reformer_tts.dataset.configreformer_tts.config.Config มีการตั้งค่าการกำหนดค่าของ submodules ทั้งหมดด้วยวิธีนี้ค่าเริ่มต้นจะถูกตั้งค่าใกล้กับสถานที่ที่พวกเขาใช้ค่าการกำหนดค่าใด ๆ สามารถแทนที่ได้ทุกที่ที่คุณต้องการ
เพื่อเปลี่ยนการกำหนดค่ารันไทม์
python reformer_tts/cli.py save-config -o config/custom.yml หรือคัดลอกหนึ่งในไฟล์การกำหนดค่าที่มีอยู่ใน config/ directory ด้วยตนเอง-c , เช่น: python reformer_tts/cli.py -c config/custom.yml [COMMAND]เพื่อเพิ่มการกำหนดค่าสำหรับโมดูลใหม่
config.py ในโมดูลของคุณdataset และโมดูล squeezewave )reformer_tts.config main config เราใช้ DVC สำหรับการกำหนดท่อส่งข้อมูล รีโมตตั้งค่าบนที่เก็บข้อมูล Google Cloud สำหรับรายละเอียดการเรียกใช้ dvc config list
โหนดที่เตรียมไว้สำหรับการวิ่ง:
/scidatalgก่อนรัน:
เพื่อเรียกใช้การฝึกอบรม:
srun --qos=gsn --partition=common --nodelist=<name_of_chosen_node> --pty /bin/bash/scidatalg/reformer-tts/reformer-tts/ ตรวจสอบให้แน่ใจว่ามีการดึงพื้นที่เก็บข้อมูลและในสาขาที่เหมาะสมjobs/train_entropy.sbatch - เติมชื่อโหนดและคำสั่งการฝึกอบรมsbatch your/job/script/location.sbatch Pro Tip watch -n 1 squeue -u your_username เพื่อดูว่างานของคุณกำลังทำงานอยู่แล้ว Pro Tip2 คุณสามารถดูการอัปเดตไปยังบันทึกโดยเรียกใช้ tail -f file.log หรือ less --follow-name +F file.log
ในการดึงจาก DVC ใช้ jobs/entropy_dvc_pull.sbatch
เนื่องจากไดเรกทอรี /scidatasm ไม่ได้ซิงค์ในขณะที่เราต้องการฝึกอบรมเราต้องตั้งค่าการฝึกอบรมในแต่ละโหนดแยกกันด้วยมือ ในการตั้งค่า env บนโหนดใหม่ติดตามการเกิดนี้:
หมายเหตุ : เฉพาะโหนดที่มี /scidatalg ได้รับการสนับสนุนโดยสคริปต์นี้ โหนดเหล่านี้คือ: ASUSGPU4, ASUSGPU3, ASUSGPU2, ASUSGPU1, Arnold, Sylvester
srun --qos=gsn --partition=common --nodelist=<name_of_chosen_node> --pty /bin/bash${HOME}/gcp-cred.json (ใช้ตัวแก้ไขที่คุณชื่นชอบ)scripts/setup_entropy_node.sh ไปยังไฟล์ใหม่ใน Home DIR (ใช้ตัวแก้ไขอีกครั้ง)