นี่คือรหัสในการทำซ้ำการทดลองจากกระดาษ EMNLP 2021 "พลังของมาตราส่วนสำหรับการปรับแต่งพารามิเตอร์ที่มีประสิทธิภาพสูงสุด" (Lester et al., 2021)
โมเดลเหล่านี้สร้างขึ้นบน T5X ซึ่งกำหนดรูปแบบและลูปการฝึกอบรม Flaxformer ซึ่งกำหนดการคำนวณแบบจำลองจริง ผ้าลินินซึ่งกำหนดเลเยอร์โมเดลระดับต่ำ และ Jax ซึ่งให้การดำเนินการจริง รายละเอียดของการใช้งานของเราสามารถดูได้ที่นี่
gs://{bucket-name}/path/to/item/in/bucket นี่คือที่ที่เราจะจัดเก็บชุดข้อมูลที่แคชรวมถึงจุดตรวจและผลลัพธ์ เพื่อความสะดวกในการอ้างอิงคำสั่งคลาวด์ที่พบบ่อยที่สุดสำหรับการโต้ตอบกับ TPU VMS คือ # Create a Cloud TPU VM
$ gcloud alpha compute tpus tpu-vm create ${TPU_NAME}
--zone ${ZONE}
--accelerator-type v3-8
--version v2-alpha
# SSH into a Cloud TPU VM
$ gcloud alpha compute tpus tpu-vm ssh ${TPU_NAME} --zone ${ZONE}
# Delete a Cloud TPU VM
$ gcloud alpha compute tpus tpu-vm delete ${TPU_NAME} --zone ${ZONE}git clone --branch=main https://github.com/google-research/prompt-tuning
cd prompt-tuningpython3 -m pip install .[tpu] -f https://storage.googleapis.com/jax-releases/libtpu_releases.html หากคุณพบข้อผิดพลาดที่ PIP พยายามติดตั้งก่อนหน้านี้และ Earliler เวอร์ชันการพึ่งพา (ตัวอย่างเช่น TensorFlow) จนกว่าจะพยายามติดตั้งเวอร์ชัน 0.0.0 จากนั้นล้มเหลวลองเพิ่ม --use-deprecated=legacy-resolver ไปยังคำสั่งการติดตั้ง ข้อผิดพลาดนี้เกี่ยวข้องกับเวอร์ชันที่ต้องการการพึ่งพาระหว่างการพึ่งพาและพฤติกรรมมักเรียกว่าย้อนรอย หากคุณใช้ธงอาจเป็นไปได้ว่าอาจติดตั้งไลบรารีเวอร์ชันที่เข้ากันไม่ได้และคุณควรระวังคำเตือนเกี่ยวกับความไม่ตรงกันในเอาต์พุตของคำสั่งการติดตั้ง
หมายเหตุ: หากคุณวางแผนที่จะแฮ็คในการปรับแต่งภายในและต้องการการติดตั้งที่แก้ไขได้ (ดังนั้นการเปลี่ยนแปลงในรหัสโคลนจะถูกใช้เมื่อคุณรันการฝึกอบรม) เรียกใช้ pip ด้วยการตั้งค่าสถานะ -e และคุณอาจต้องลบไฟล์ pyproject.toml หากคุณได้รับข้อผิดพลาดระหว่างการติดตั้ง
ในการเรียกใช้การทดสอบให้ติดตั้งแพ็คเกจด้วย [test] ( python3 -m pip install .[test] ... ) ตัวเลือกจากนั้นเรียกใช้ python3 -m pytest จากรูทของที่เก็บโคลน
การฝึกอบรมพรอมต์นั้นคล้ายกับการปรับแต่งแบบจำลองด้วย T5X; ความแตกต่างที่สำคัญคือเรามีชุดไฟล์กำหนดค่าการปรับแต่งพร้อมใช้งานของเราเองที่จะใช้
เราให้บริการสคริปต์สาธิต ( prompt_tuning/scripts/sst2-demo.sh ) ที่มีชิ้นส่วนที่จำเป็นทั้งหมดสำหรับการฝึกอบรมพรอมต์ คุณสามารถใช้สิ่งนี้เป็นจุดเริ่มต้นหรือตั้งค่าตัวแปรสภาพแวดล้อม MODEL_DIR และ TFDS_DATA_DIR ที่มีพา ธ ไปยังที่เก็บข้อมูลของ Google Cloud Storage เพื่อเรียกใช้สคริปต์นี้โดยตรง
./prompt-tuning/prompt_tuning/scripts/sst2-demo.shเพื่อช่วยด้วยความเร็วการวนซ้ำเรามักจะระบุตัวเลือกมากขึ้นบรรทัดคำสั่งแทนที่จะรวมการกำหนดค่าทั้งหมดลงในไฟล์จินเดียว หมายเหตุบางตัวเลือก:
--gin_search_paths :: รายการไดเรกทอรีที่คั่นด้วยเครื่องหมายจุลภาคเพื่อใช้เป็นคำนำหน้าพา ธ สำหรับไฟล์จิน เราสามารถใช้ prompt_tuning.scripts.find_module ${module} เพื่อค้นหาตำแหน่งการติดตั้งของไลบรารีที่รวมการกำหนดค่ากับพวกเขา--gin_file :: ไฟล์ gin ที่จะโหลด เรามักจะใช้พา ธ ที่สัมพันธ์กับไลบรารีที่ติดตั้งด้วยเช่น prompt_tuning/configs/models/t5_1_1_base_prompt.gin มากกว่า models/t5_1_1_base_prompt.gin เพื่อหลีกเลี่ยงความสับสนใด ๆ การใช้ธงหลายเวลาสามารถใช้เพื่อระบุไฟล์ GIN หลายไฟล์ที่จะรวมเข้าด้วยกัน ตัวเลือกการกำหนดค่าใด ๆ ที่ตั้งอยู่ในหลายไฟล์จะใช้ค่าจากไฟล์สุดท้ายในรายการ--gin.{PARAM}={VALUE} :: ธงแทนที่ทั่วไปนี้จะตั้ง PARAM เป็น VALUE สิ่งนี้สามารถใช้เพื่อตั้งค่าตัวเลือกการกำหนดค่าได้อย่างง่ายดายโดยไม่ต้องให้เป็นอาร์กิวเมนต์บรรทัดคำสั่งจริง ตัวอย่างเช่น. --gin.utils.SaveCheckpointConfig.keep=20 จะบันทึกจุดตรวจ 20 ครั้งสุดท้ายเมื่อโมเดลมีขนาดใหญ่ขึ้นเช่น XL และ XXL พวกเขาไม่พอดีกับ 8 TPU ที่มาพร้อมกับ TPU VM เดียว ในกรณีเหล่านี้เราจะต้องมีชิ้นส่วนของ TPU POD (ข้อมูลเพิ่มเติมเกี่ยวกับสถาปัตยกรรม TPU และการกำหนดค่าที่มีอยู่สามารถพบได้ที่นี่) ความแตกต่างที่สำคัญระหว่างการฝึกอบรมการแจ้งเตือนใน TPU VM เดียวและบน Slice POD คือตอนนี้เรามี TPU VM หลายตัวและจะเรียกใช้ SPMD JAX เดียวกันแต่ละ VM หน้านี้มีข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรม JAX แบบหลายโฮสต์ คู่มือนี้ให้การแนะนำอย่างรวดเร็วเกี่ยวกับการรันโปรแกรม JAX บนชิ้น TPU POD แต่เราจะตีประเด็นหลักที่นี่
$ gcloud alpha compute tpus tpu-vm create ${TPU_NAME}
--zone ${ZONE}
--accelerator-type v3-32
--version v2-alpha--command= Flag และควรทำงานบน VM ทั้งหมดของเรา (เรียกว่าคนงาน) ด้วย --worker=all $ gcloud alpha compute tpus tpu-vm ssh ${TPU_NAME}
--zone ${ZONE}
--worker=all
--command= " git clone --branch=main https://github.com/google-research/prompt-tuning && cd prompt-tuning && "
python3 -m pip install . -f https://storage.googleapis.com/jax-releases/libtpu_releases.html เขียนสคริปต์เพื่อฝึกฝนพรอมต์ของคุณ เรารวมสคริปต์ตัวอย่าง ( /prompt_tuning/scripts/sst2-xxl-demo.sh ) รถไฟพร้อมพรอมต์เพื่อแก้ปัญหาชุดข้อมูล SST2 โดยใช้ T5 1.1 LM100K XXL คุณสามารถใช้สิ่งนี้เป็นจุดเริ่มต้นหรือเพียงแค่กรอกเส้นทางไปยังถังเก็บข้อมูล Google Cloud Storage ของคุณเพื่อระบุตำแหน่งที่คุณต้องการบันทึกผลลัพธ์ของคุณ ( MODEL_DIR ) และสถานที่ที่จะแคชข้อมูล TFDS ( TFDS_DATA_DIR ) หรือตั้งค่าเป็นตัวแปรสภาพแวดล้อม
คัดลอกสคริปต์การฝึกอบรมของคุณแต่ละคน หากนี่เป็นครั้งแรกที่คุณเรียกใช้ scp คุณอาจได้รับข้อผิดพลาดให้เรียกใช้คำสั่ง ssh-add /.../.ssh/google_compute_engine จากข้อความแสดงข้อผิดพลาดและลองอีกครั้ง
$ gcloud alpha compute tpus tpu-vm scp sst2-xxl-demo.sh ${TPU_NAME} :
--zone= ${ZONE}
--worker=all$ gcloud alpha compute tpus tpu-vm ssh ${TPU_NAME}
--zone ${ZONE}
--worker=all
--command= " ./sst2-xxl-demo.sh " หากคนงานคนหนึ่งมีข้อผิดพลาดระหว่างการฝึกอบรมคุณจะถูกทิ้งให้อยู่กับกระบวนการที่ใช้ TPUs กับคนงานคนอื่น ๆ สิ่งนี้จะหยุดคุณจากการรีสตาร์ทงานของคุณจนกว่ากระบวนการเหล่านั้นจะถูกยกเลิกและปล่อย TPU คำสั่งต่อไปนี้ควรยุติกระบวนการเหล่านี้ทั้งหมด คุณอาจเห็นหน้า kill Command Man กลับมาจากคนงานที่มีข้อผิดพลาดเริ่มต้น
$ gcloud alpha compute tpus tpu-vm ssh ${TPU_NAME}
--zone ${ZONE}
--worker=all
--command= " sudo lsof -t /dev/accel0 | xargs kill -9 "ในการฝึกอบรมพรอมต์โดยใช้ชิ้นส่วนที่กำหนดเองเช่นชุดข้อมูลของคุณเองให้ทำตามคำแนะนำ T5X เกี่ยวกับส่วนประกอบที่กำหนดเอง
หากคุณแพ็คเกจรหัสของคุณเป็นแพ็คเกจ PIP -Installable Python คุณจะไม่ถูกผูกไว้กับไดเรกทอรีเดียวและคุณสามารถใช้ python3 -m prompt_tuning.scripts.find_module {your_module} เพื่อช่วยตั้งค่า gin_search_paths หมายเหตุ: หากคุณวางแผนที่จะรวมการกำหนดค่าจินในแพ็คเกจที่ติดตั้งได้ตรวจสอบให้แน่ใจว่าไดเรกทอรีที่มีไฟล์ config มี __init__.py เป็น gin ต้องการไฟล์ที่จะอยู่ในแพ็คเกจ Python
หากชิ้นส่วนของส่วนประกอบที่กำหนดเองของคุณสามารถกำหนดค่าได้ Gin พวกเขาจะต้องนำเข้าอย่างชัดเจนในไฟล์ Gin ของคุณ หากพวกเขาได้รับการนำเข้าหลังจากไฟล์จินถูกแยกวิเคราะห์พวกเขาจะทำให้เกิดข้อผิดพลาด หากไม่มีการพึ่งพาของคุณที่มีการกำหนดค่า Gin คุณสามารถหลีกเลี่ยงการเขียนไฟล์ Gin โดยผ่าน --gin.MIXTURE_OR_TASK_MODULE="'path.to.your.module' สิ่งนี้จะนำเข้าโมดูลของคุณโดยอัตโนมัติ
วิธีที่เราแนะนำในการอนุมานด้วยพรอมต์คือการโหลดจุดตรวจสอบดั้งเดิมที่ใช้ในการเริ่มต้นโมเดลและพรอมต์จากไฟล์ ตามที่อธิบายไว้ในส่วนนี้เกี่ยวกับการโหลดบางส่วน T5X รองรับการโหลดพารามิเตอร์รุ่นบางอย่างในขณะที่เริ่มต้นการเริ่มต้นอื่น ๆ ตั้งแต่เริ่มต้น เราใช้สิ่งนี้ร่วมกับ from_array prompt initializer เพื่อโหลดพารามิเตอร์แช่แข็งจากจุดตรวจสอบดั้งเดิมและไฟล์พร้อมท์ไฟล์ configs/runs/prompt_eval.gin ตั้งค่าการกำหนดค่านี้สำหรับคุณ; คุณเพียงแค่ต้องจัดหา PROMPT_FILE หากโมเดลของคุณได้รับการฝึกฝนด้วยไฟล์ prompts/ กำหนดค่าใด ๆ คุณสามารถลบออกจากอาร์กิวเมนต์ไปยังสคริปต์การประเมินผล
สคริปต์ sst2-demo-eval.sh ที่รวมอยู่นั้นแสดงตัวอย่างของการประเมินผลด้วยวิธีนี้ สิ่งที่จำเป็นทั้งหมดคือการตั้งค่าตัวแปรสภาพแวดล้อม EVAL_DIR และ TFDS_DATA_DIR ไปยังเส้นทางเพื่อจัดเก็บผลลัพธ์ของการประเมินผลและชุดข้อมูล TensorFlow Cache ตามความเคารพ
ใน T5X สคริปต์การประเมินจะถือว่าชุดข้อมูลของคุณมีป้ายกำกับและส่งออกผลลัพธ์สุดท้ายจากฟังก์ชั่นการวัดชุดข้อมูลของคุณ สคริปต์การอนุมานไม่จำเป็นต้องใช้ป้ายกำกับและแทนที่การทำนายของโมเดลของคุณแทน เรารวมไฟล์ prompt_infer.gin แบบอะนาล็อกเพื่อใช้กับสคริปต์การอนุมาน
หากคุณต้องการทำการอนุมานหรือการประเมินผลด้วยจุดตรวจสอบ T5X ที่ผลิตจากการฝึกอบรมการปรับแต่งพร้อมท์คุณสามารถใช้ (eval|infer).gin config จาก T5X โดยตรง คุณจะต้องอัปเดต utils.RestoreChekcpointConfig แม้ว่า คุณควรตั้ง path ไปยังจุดตรวจสอบใหม่ assignment_map=() และ fallback_to_scratch=False
รูปแบบทั้งหมดการฝึกอบรมการประเมินผลการออมการกู้คืน ฯลฯ การกำหนดค่าจะทำผ่านทางจิน ดูที่เก็บของ gin-config สำหรับการแนะนำทั่วไปเกี่ยวกับจินและไพรเมอร์นี้
เราติดตามเค้าโครงการกำหนดค่า T5X:
runs/ :: มีการกำหนดค่าสำหรับการฝึกอบรมจริงของโมเดล นี่คือสิ่งที่สิ่งต่าง ๆ เช่นชุดข้อมูลและการกำหนดค่าการประเมินผลarchitectures/ :: มีการกำหนดค่าสำหรับวิธีการทำงานของโมเดล นี่คือสิ่งที่สิ่งต่าง ๆ เช่นตัวเข้ารหัส Decoder vs Decoder-only และการแบ่งปันการแชร์ได้รับการกำหนดค่าmodels/ :: มีการกำหนดค่าที่กำหนดพารามิเตอร์เฉพาะรุ่นเช่นจำนวนเลเยอร์หรือขนาดของตารางการฝัง นอกจากนี้ยังกำหนดค่าสิ่งต่าง ๆ เช่น wrapper รุ่น T5X ที่ใช้models/decoding/ :: มีการกำหนดค่าที่ใช้งานง่ายเพื่อแลกเปลี่ยนวิธีการสร้างข้อความในระหว่างการอนุมานรวมถึงการกำหนดค่าสำหรับการค้นหาลำแสงและการสุ่มตัวอย่างนิวเคลียสmodels/sizes/ :: มีการตั้งค่าต่าง ๆ เพื่อสร้างโมเดลที่มีขนาดต่างกันเหล่านี้รวมกับเวอร์ชันเริ่มต้นเพื่อสร้างรุ่นที่มีขนาดเช่น t5_1_1_prompt.gin + sizes/large.gin สร้างรุ่น T5 1.1 ขนาดใหญ่ ชุดค่าผสมทั่วไปบางอย่างที่มีอยู่แล้วเป็นไฟล์ GIN ที่มีด้านขวารวมถึง ( t5_1_1_large_prompt.gin สำหรับตัวอย่างของเราด้านบน) หมายเหตุ: ไฟล์ขนาดเหล่านี้จำเป็นต้องมา หลังจาก ไฟล์รุ่นหลักprompts/ :: ไดเรกทอรีพิเศษของเรามีการกำหนดค่าที่ตั้งค่าตัวแปรจินพ PROMPT เพื่อให้สามารถสลับการเริ่มต้นพร้อมท์ได้ง่ายซึ่งเพิ่มไฟล์พรอมต์เป็นอาร์กิวเมนต์ --gin_file (จำเป็นต้องมาหลังจากไฟล์ models/ จิน) เมื่อระบุ -อาร์กิวเมนต์ --gin_file ในบรรทัดคำสั่งการสั่งซื้อมีความสำคัญ ลำดับทั่วไปที่ต้องระบุไฟล์ GIN คือ:
models/*.ginprompts/*.ginmodels/sizes/*.gin*models/decoding/*.ginruns/*.gin T5X มีฟิลด์ที่จำเป็นบางอย่างเช่น MIXTURE_OR_TASK_NAME หรือ TASK_FEATURE_LENGTHS เราเพิ่มอีกสอง:
PROMPT_LENGTH :: ความยาวของพรอมต์ที่เราใช้อยู่นี้ใช้ในสถานที่ที่แตกต่างกันสองสามแห่งที่เราต้องการเป็นแมโครจินที่เราสามารถอ้างอิงได้หลายแห่งPROMPT :: นี่คือการกำหนดค่าของโมดูลพรอมต์จริงที่จะใช้ใน subclasses flaxformer PromptX หมายเหตุ: การปรับแต่งพร้อมท์ไม่สนับสนุนการบรรจุตัวอย่าง ซึ่งหมายความว่าความยาวเป้าหมายสูงสุดของเราจะต้องยาวพอที่จะพอดีกับเป้าหมายสำหรับแต่ละตัวอย่าง ซึ่งหมายความว่าคีย์ targets ของเราในการทำแผนที่ TASK_FEATURE_LENGTHS อาจสั้นกว่ามากตัวอย่างเช่นประมาณ 4 สำหรับงาน Superglue (Wang et al., 2019) เมื่อเทียบกับ 62 ซึ่งเป็นสิ่งที่ค่าเริ่มต้น P5x คือ
มีหลายตัวเลือกสำหรับการเริ่มต้นของพารามิเตอร์พรอมต์ เราสนับสนุนวิธีการต่าง ๆ ในส่วน 3.2 กระดาษของเรารวมถึงการเริ่มต้นจากไฟล์ หลังอนุญาตให้คนหนึ่งทำสิ่งต่าง ๆ เช่นรถไฟบน boolq เริ่มต้นจากพรอมต์ที่เรียนรู้เกี่ยวกับ MNLI
Initializers ทั้งหมดติดตาม Flax Initializer API ของการเป็นฟังก์ชันพารามิเตอร์ที่ส่งคืนการปิดฟังก์ชั่นการเริ่มต้น ฟังก์ชั่นการเริ่มต้นที่แท้จริงมักจะมีลายเซ็นของ
def initializer ( rng : Array , shape : Sequence [ int ]) -> Array :
... เราให้แต่ละรูปแบบการเริ่มต้นเป็นไฟล์กำหนดค่า GIN ในไดเรกทอรี configs/prompts พวกเขาสามารถใช้งานได้โดยการรวมไฟล์ GIN ด้วย --gin_file=path/to/configs/prompts/scheme.gin ไฟล์นี้ต้องมา หลังจาก ไฟล์รุ่นหลักมิฉะนั้นวิธีการเริ่มต้น (ชุดแบบสุ่ม) จะเขียนทับไฟล์ที่คุณเลือก วิธีการเริ่มต้นเหล่านี้บางอย่างจะทำให้คุณต้องตั้งค่า Gin พิเศษทั้งแม้ว่าจะมีการแทนที่ของไฟล์ Gin ของคุณ
เครื่องแบบสุ่ม
มาตรฐานการเริ่มต้นแบบสุ่มคล้ายกับสิ่งที่ผู้คนใช้สำหรับการเริ่มต้นการเริ่มต้น นี่คือค่าเริ่มต้นและไม่จำเป็นต้องใช้ไฟล์ GIN สเกลของค่าสุ่มสามารถปรับได้โดย overridding prompt_init/linen.initializers.uniform.scale=N
คำศัพท์ตัวอย่าง
ตัวอย่างการฝังโทเค็นเพื่อใช้เป็นค่าเริ่มต้นสำหรับแต่ละตำแหน่งพรอมต์ด้วย from_sample_of_embeddings initializer คุณสามารถ จำกัด การสุ่มตัวอย่างไปยังตัวฝังตัวแรก n ด้วย prompt_init/prompts.from_samples_of_embeddings.population_size พารามิเตอร์
สิ่งนี้สามารถใช้กับ --gin_file=prompt_tuning/configs/prompts/from_sampled_vocab.gin วิธีนี้ใช้ตารางการฝังที่สกัดจากจุดตรวจสอบรุ่นเริ่มต้น นอกจากนี้คุณยังสามารถจัดเตรียมไฟล์ฝังตัวของคุณเองด้วย --gin_file=prompt_tuning/configs/prompts/from_sampled_vocab_numpy.gin วิธีนี้ต้องการให้คุณให้ค่าสำหรับ EMBEDDING_FILE ซึ่งเป็นอาร์เรย์ NumPy ของตารางการฝังของโมเดล สิ่งนี้สามารถสกัดได้จากจุดตรวจสอบโมเดลโดยใช้ prompt_tuning.scripts.extract_variable
ฉลากชั้นเรียน
เราสนับสนุนการเริ่มต้นการกำหนดเวลาพร้อมท์ด้วยการฝังฉลากคลาส (aka verbalizers ) ผ่านทาง initializer from_embedded_list ผู้ใช้ที่ให้รายการคำ (ฉลากคลาส) ที่จะใช้ แต่ละคำนั้นถูกทำให้เป็นคำศัพท์ที่ให้ไว้ ฝังด้วยตารางคำศัพท์ที่ให้ไว้ โดยรวมถ้าจำเป็นต้องใช้ใน sub-tokens; และใช้ในการเริ่มต้นขั้นตอนเวลาที่รวดเร็ว หากโทเค็นที่ให้ไว้จะไม่ครอบคลุมความยาวของพรอมต์เต็มรูปแบบโทเค็นที่หายไปจะเริ่มต้นโดยใช้ตัวเริ่มต้นที่ให้กลับมา
เราสามารถจับคู่กระดาษที่โทเค็นที่ไม่ได้เติมเต็มจะเต็มไปด้วยการสุ่มตัวอย่างจากตารางการฝังโดยการเขียนการเริ่มต้นนี้ด้วยหนึ่งด้านบน มันสามารถใช้กับ --gin_file=prompt_tuning/configs/prompts/from_class_labels.gin สิ่งนี้ต้องมีการตั้งค่า CLASS_LABELS ซึ่งเป็นรายการของคำที่คุณต้องการฝังเป็นการเริ่มต้นที่รวดเร็ว นอกจากนี้คุณยังสามารถจัดเตรียมไฟล์ฝังตัวของคุณเอง (ซึ่งเหมือนกับด้านบน) ด้วย --gin_file=prompt_tuning/configs/prompts/from_class_labels_numpy.gin นอกจากนี้ยังต้องมีการตั้งค่า EMBEDDING_FILE
จากสตริง
นอกจากนี้เรายังสนับสนุนการเริ่มต้นพรอมต์ด้วยการฝังสตริงบางอย่างมักจะใช้เพื่อเริ่มต้นจากพรอมต์ที่ไม่ต่อเนื่องหรือคำอธิบายงาน สิ่งนี้ใช้ from_embedded_string initializer สตริงถูกทำให้เป็นไปได้โดยคำศัพท์ที่ให้ไว้แต่ละโทเค็นจะถูกค้นหาในตารางการฝังที่ให้ไว้และการแสดงการฝังตัวของสตริงที่เกิดขึ้นจะใช้เป็นค่าเริ่มต้นที่รวดเร็ว หากโทเค็นที่ให้ไว้จะไม่ครอบคลุมความยาวของพรอมต์เต็มรูปแบบโทเค็นที่หายไปจะเริ่มต้นโดยใช้ตัวเริ่มต้นที่ให้กลับมา
หมายเหตุ: คำศัพท์เพียงแค่แปลงสตริงเป็นลำดับของ ID คุณจะต้องตรวจสอบให้แน่ใจว่าสตริงตรงกับผลลัพธ์ของการจัดรูปแบบข้อความใด ๆ (ช่องว่างรอบเครื่องหมายวรรคตอน ฯลฯ ) ที่งาน SEQIO ของคุณทำ
จากไฟล์
นอกจากนี้คุณยังสามารถโหลดพรอมต์จากไฟล์ด้วย from_array initializer เพื่อเปิดใช้งานการถ่ายโอนข้ามงาน สิ่งนี้ทำด้วย --gin_file=prompt_tuning/configs/prompts/from_file.gin สิ่งนี้ต้องการการตั้ง PROMPT_FILE ด้วยพา ธ ไปยังไฟล์ numpy ด้วยพรอมต์เพื่อโหลด เวอร์ชัน NUMPY ของพรอมต์จะถูกปล่อยออกมาโดยค่าเริ่มต้นเมื่อการฝึกอบรม แต่พรอมต์สามารถสกัดได้ด้วยสคริปต์ที่กล่าวถึงข้างต้น
เราได้เปิดตัวจุดตรวจ T5X Native ของจุดตรวจ T5 1.1 ที่มีขั้นตอนการปรับแบบจำลองภาษา 100k ขั้นตอน
สิ่งเหล่านี้ถูกแปลงจากจุดตรวจ Tensorflow สาธารณะตาข่าย
เราได้เปิดตัวพรอมต์ล่วงหน้าเกี่ยวกับงานที่หลากหลายและวางแผนที่จะเพิ่มพวกเขาเมื่อเวลาผ่านไป
การแจ้งเตือนสามารถพบได้ในไดเรกทอรี pretrained_prompts จากนั้นแต่ละกลุ่มไดเรกทอรีย่อยจะได้รับการกระตุ้นโดยแบบจำลองที่พวกเขาได้รับการฝึกฝน วิธีที่ง่ายที่สุดในการอ้างอิงพรอมต์เหล่านี้ที่มาพร้อมกับห้องสมุดคือ:
--PROMPT_FILE= ` python3 -m prompt_tuning.scripts.find_module prompt_tuning ` /pretrained_prompts/{MODEL_SIZE}/{PROMPT}.npy เนื่องจากการสุ่มโดยธรรมชาติของการคำนวณแบบขนานจึงมีการตั้งค่าบางอย่างที่ต้องจับคู่ระหว่างการฝึกอบรมและการประเมินผลเพื่อให้ได้ตัวเลขเดียวกันที่แน่นอน ไดเรกทอรีย่อยโมเดลแต่ละตัวมี README.md ระบุว่าการตั้งค่าเหล่านี้ควรเป็นอย่างไร การตั้งค่าที่สำคัญที่สุดในการจับคู่คือขนาดแบทช์โทโพโลยี TPU และการแบ่งพาร์ติชันแบบขนานโมเดล ตารางประกอบด้วยคะแนนที่คุณควรคาดหวังว่าจะดูว่าคุณใช้พรอมต์เหล่านี้ใน t5x.eval
นี่คือการรวบรวมทรัพยากรเพิ่มเติมเกี่ยวกับการปรับแต่งทันที
หากคุณใช้งานนี้เป็นจุดกระโดดโปรดอ้างอิง
@inproceedings { lester-etal-2021-power ,
title = " The Power of Scale for Parameter-Efficient Prompt Tuning " ,
author = " Lester, Brian and
Al-Rfou, Rami and
Constant, Noah " ,
booktitle = " Proceedings of the 2021 Conference on Empirical Methods in Natural Language Processing " ,
month = nov,
year = " 2021 " ,
address = " Online and Punta Cana, Dominican Republic " ,
publisher = " Association for Computational Linguistics " ,
url = " https://aclanthology.org/2021.emnlp-main.243 " ,
doi = " 10.18653/v1/2021.emnlp-main.243 " ,
pages = " 3045--3059 " ,
}นี่ไม่ใช่ผลิตภัณฑ์ Google ที่ได้รับการสนับสนุนอย่างเป็นทางการ