T5X เป็นการดำเนินการใหม่และปรับปรุงของ T5 (และอื่น ๆ ) ใน Jax และ Flax T5 บน tensorflow ด้วย meshtf ไม่ได้รับการพัฒนาอย่างแข็งขันอีกต่อไป หากคุณยังใหม่กับ T5 เราขอแนะนำให้เริ่มต้นด้วย T5X
ไลบรารี t5
ทำหน้าที่เป็นรหัสเป็นหลักในการทำซ้ำการทดลองใน การสำรวจขีด จำกัด ของการเรียนรู้การถ่ายโอนด้วยหม้อแปลงข้อความแบบรวมเป็นข้อความ ในบทความเราสาธิตวิธีการบรรลุผลลัพธ์ที่ล้ำสมัยในงาน NLP หลายงานโดยใช้หม้อแปลงข้อความเป็นข้อความที่ผ่านการฝึกอบรมล่วงหน้าบนคลังข้อความขนาดใหญ่
ส่วนใหญ่ของรหัสในที่เก็บนี้ใช้สำหรับการโหลดการประมวลผลล่วงหน้าการผสมและการประเมินชุดข้อมูล นอกจากนี้ยังมีวิธีในการปรับแต่งโมเดลที่ผ่านการฝึกอบรมมาก่อนที่จะเผยแพร่พร้อมกับสิ่งพิมพ์
ไลบรารี t5
สามารถใช้สำหรับการพัฒนาโมเดลในอนาคตโดยการจัดทำโมดูลที่มีประโยชน์สำหรับการฝึกอบรมและการปรับแต่ง (อาจ ใหญ่มาก ) ในการผสมของงานข้อความกับข้อความ
t5.data
เป็นแพ็คเกจสำหรับการกำหนดวัตถุ Task
ที่ให้ tf.data.Dataset
s
แต่ละ Task
ประกอบด้วย:
นอกจากนี้คุณอาจให้ทางเลือก:
แหล่งข้อมูล สามารถเป็นฟังก์ชั่นโดยพลการที่มี tf.data.Dataset
แต่เรายังมี wrappers ที่ง่ายกว่าสำหรับชุดข้อมูลที่มีอยู่ในชุดข้อมูล TensorFlow (TFDs) ( TfdsTask
) หรือเก็บไว้เป็นไฟล์ข้อความที่มีตัวอย่างหนึ่งต่อ TextLineTask
.
ตัวประมวลผลข้อความ preprocessor แปลงตัวอย่างในชุดข้อมูลต้นฉบับเป็นรูปแบบที่เหมาะสมสำหรับโมเดลข้อความเป็นข้อความที่มีฟิลด์สำหรับ inputs
และ targets
ตัวอย่างเช่น t5.data.preprocessors.translate
preprocessor แปลงอินพุตในรูปแบบ
{ 'de' : 'Das ist gut.' , 'en' : 'That is good.' }
เป็นแบบฟอร์ม
{ 'inputs' : 'translate German to English: Das ist gut.' , 'targets' : 'That is good.' }
นอกเหนือจากการประมวลผลข้อความล่วงหน้าคุณยังสามารถใช้ ตัวประมวลผลโทเค็น หนึ่งตัวขึ้นไปเพื่อแก้ไขอินพุตโพสต์การตั้งค่าอินพุต เราใช้วัตถุประสงค์ก่อนการฝึกอบรมที่ไม่ได้รับการดูแลโดยใช้ตัวประมวลผลโทเค็นเหล่านี้
เราให้บริการประมวลผลล่วงหน้าที่กำหนดไว้ล่วงหน้าจำนวนมากใน t5.data.preprocessors
แต่คุณอาจกำหนดของคุณเอง
โมเดลชิ้นประโยค ถูกใช้เพื่อเพิ่มสตริงอินพุตและถอดรหัสโทเค็นเอาต์พุต คุณสามารถสร้างโมเดลของคุณเองด้วยไลบรารี Google/Sentencepiece หรือใช้รุ่นเริ่มต้นของเราที่ t5.data.DEFAULT_SPM_PATH
หากคุณสร้างของคุณเองคุณต้องใช้แฟล็ก --pad_id=0 --eos_id=1 --unk_id=2 --bos_id=-1
กับ spm_train
ให้เข้ากันได้กับรหัสรุ่นของเรา
ฟังก์ชั่นการวัด จะส่งคืนคะแนนที่ได้รับเป้าหมายและการทำนายจากแบบจำลอง คุณสามารถกำหนด ฟังก์ชั่น postprocess เพื่อแปลงข้อความเป้าหมายและการทำนายเป็นรูปแบบอื่นก่อนที่จะเรียกเมตริก เราให้บริการตัวชี้วัดที่กำหนดไว้ล่วงหน้าใน t5.evaluation.metrics
ในที่สุด t5.data
มีคลาส Mixture
ที่สามารถสร้างอินสแตนซ์เพื่อรวมชุดข้อมูล Task
หลายชุดสำหรับการฝึกอบรมหลายงานโดยใช้ฟังก์ชั่นต่าง ๆ เพื่อระบุอัตราการผสม
t5.evaluation
มีสององค์ประกอบหลัก:
t5.models
มี shims สำหรับการเชื่อมต่อ Tasks
T5 และ Mixtures
กับการใช้แบบจำลองสำหรับการฝึกอบรมการประเมินผลและการอนุมาน
ขณะนี้มีสอง shims ให้บริการ: หนึ่งสำหรับหม้อแปลง Tensorflow ตาข่ายที่เราใช้ในกระดาษของเราและอีกอันสำหรับห้องสมุด Hugging Face Transformers API Hugging Face กำลังทดลองและอาจมีการเปลี่ยนแปลง แต่ให้วิธีที่ง่ายและง่ายในการโหลดปรับแต่งและประเมินโมเดลที่ผ่านการฝึกอบรมมาก่อนโดยใช้ Pytorch ใน GPU เดียว หากคุณต้องการใช้โมเดลที่ใหญ่ที่สุดของเราใน TPUs และ/หรือทำซ้ำผลลัพธ์ในกระดาษของเราคุณควรใช้ MTFModel API และ t5_mesh_transformer
Binary หากคุณสนใจที่จะปรับแต่งโมเดลของเราใน GPU ใน Pytorch คุณควรลอง HFPYTORCHMODEL API เนื่องจาก hfpytorchmodel เป็นการทดลองส่วนที่เหลือของ readMe นี้จะถือว่าการใช้งาน MTFModel และไบนารีที่เกี่ยวข้อง ตัวอย่างการใช้งานของ HFPYTORCHMODEL มีอยู่ที่นี่
วิธีที่ง่ายที่สุดในการทดลองใช้ T5 คือ TPU ฟรีในการสอน colab ของเรา
ด้านล่างเราให้ตัวอย่างสำหรับวิธีการฝึกอบรมล่วงหน้าปรับแต่งประเมินและถอดรหัสจากโมเดลจากบรรทัดคำสั่งด้วย codebase ของเรา คุณสามารถใช้คำแนะนำเหล่านี้เพื่อทำซ้ำผลลัพธ์ของเราปรับจุดตรวจสอบที่ปล่อยออกมาของเราด้วยข้อมูลและ/หรือไฮเปอร์พารามิเตอร์ของคุณเอง
คุณสามารถใช้ Task
ใหม่หรือที่มีอยู่แล้วหรือคุณอาจโหลดตัวอย่างจากไฟล์ TSV ที่ประมวลผลล่วงหน้า
Task
ขึ้นอยู่กับแหล่งข้อมูลของคุณ (ดูด้านบน) คุณจะต้องเตรียมข้อมูลของคุณอย่างเหมาะสม
Task
หากใช้งานวานิลลาเพียงตรวจสอบให้แน่ใจว่าไฟล์ใด ๆ ที่โหลดโดย dataset_fn
สามารถเข้าถึง TPU (เช่นอยู่ในถัง GCS) และคุณควรจะไปได้ดี!
TfdsTask
Task
ที่กำหนดไว้ล่วงหน้าของเราส่วนใหญ่ใช้ชุดข้อมูล TensorFlow (TFDs) เป็นแหล่งข้อมูล เมื่อคุณเรียกใช้การฝึกอบรมไบนารีของเรา (ดูคำแนะนำด้านล่าง) ด้วย TfdsTask
ชุดข้อมูลจะถูกดาวน์โหลดและเตรียมการใช้งานครั้งแรกโดยอัตโนมัติ หลังจากการเตรียมการเสร็จสิ้นชุดข้อมูลจะถูกแคชไปยังที่เก็บข้อมูลในพื้นที่ของคุณเพื่อหลีกเลี่ยงค่าใช้จ่ายนี้ในการรันในอนาคต หากทำงานในคลาวด์เราขอแนะนำให้คุณตั้งค่าสถานะ --t5_tfds_data_dir
เพื่อชี้ไปที่ตำแหน่งที่เก็บถาวรเช่นถัง GCS นี่เป็นข้อกำหนดเมื่อการฝึกอบรมเกี่ยวกับ TPU
ชุดข้อมูล C4 ที่เราสร้างขึ้นสำหรับการฝึกอบรมล่วงหน้าที่ไม่ได้รับการดูแลนั้นมีอยู่ในชุดข้อมูล TensorFlow แต่ต้องใช้แบนด์วิดท์จำนวนมากสำหรับการดาวน์โหลดการรวบรวมข้อมูลทั่วไป (~ 7 TB) และคำนวณสำหรับการเตรียมการ (~ 335 CPU-Days) เราขอแนะนำให้คุณใช้ประโยชน์จากการสนับสนุนลำแสง Apache ใน TFD ซึ่งช่วยให้การประมวลผลล่วงหน้าแบบกระจายของชุดข้อมูลและสามารถทำงานบน Google Cloud DataFlow ด้วยคนงาน 500 คนงานควรเสร็จสมบูรณ์ในเวลา ~ 16 ชั่วโมง
หลังจากกำหนด MY_PROJECT
และ MY_BUCKET
อย่างเหมาะสมคุณสามารถสร้างชุดข้อมูลใน dataflow จาก GCP โดยใช้คำสั่งต่อไปนี้:
pip install tfds-nightly[c4]
echo ' tfds-nightly[c4] ' > /tmp/beam_requirements.txt
python -m tensorflow_datasets.scripts.download_and_prepare
--datasets=c4/en
--data_dir=gs:// $MY_BUCKET /tensorflow_datasets
--beam_pipeline_options= " project= $MY_PROJECT ,job_name=c4,staging_location=gs:// $MY_BUCKET /binaries,temp_location=gs:// $MY_BUCKET /temp,runner=DataflowRunner,requirements_file=/tmp/beam_requirements.txt,experiments=shuffle_mode=service,region= $MY_REGION "
อ่านเพิ่มเติมในคำแนะนำลำแสง TFDS
TextLineTask
TextLineTask
มีประโยชน์เมื่อแหล่งข้อมูลของคุณเป็นไฟล์ข้อความ (หรือไฟล์) พร้อมตัวอย่างหนึ่งตัวอย่างต่อบรรทัด จากนั้นคุณสามารถใช้ตัวประมวลผลข้อความล่วงหน้าเพื่อแปลงแต่ละบรรทัดเป็นพจนานุกรมของอินพุตและเป้าหมาย
ตรวจสอบให้แน่ใจว่าไฟล์ของคุณสามารถเข้าถึง TPU (เช่นอยู่ในถัง GCS) และคุณควรจะไปได้ดี!
แทนที่จะกำหนด Task
ใหม่คุณอาจใช้ไฟล์ TSV (หรือไฟล์) โดยตรงเป็นชุดข้อมูลของคุณที่แต่ละบรรทัดจะถูกจัดรูปแบบเป็น <input>t<target>
อย่างไรก็ตามมีคำเตือนสองสามข้อ:
หากคุณต้องการคุณสมบัติเหล่านี้คุณต้องกำหนด Task
ใหม่ TfdsTask
หรือ TextLineTask
คล้ายกับกรณีข้างต้นไฟล์ TSV ของคุณจะต้องสามารถเข้าถึง TPU (เช่นอยู่ในถัง GCS)
ในการติดตั้งแพ็คเกจ T5 เพียงแค่เรียกใช้:
pip install t5[gcp]
ก่อนอื่นคุณจะต้องเปิดเครื่องเสมือน (VM) บน Google Cloud รายละเอียดเกี่ยวกับการเปิดตัว VM สามารถดูได้ที่เอกสาร Google Cloud
ในการเรียกใช้การฝึกอบรมหรือประเมินบนคลาวด์ TPU คุณต้องตั้งค่าตัวแปรต่อไปนี้ตามโครงการของคุณโซนและถัง GCS อย่างเหมาะสม โปรดดูคู่มือคลาวด์ TPU Quickstart สำหรับรายละเอียดเพิ่มเติม
export PROJECT=your_project_name
export ZONE=your_project_zone
export BUCKET=gs://yourbucket/
export TPU_NAME=t5-tpu
export TPU_SIZE=v3-8
export DATA_DIR= " ${BUCKET} /your_data_dir "
export MODEL_DIR= " ${BUCKET} /your_model_dir "
โปรดใช้คำสั่งต่อไปนี้เพื่อสร้างอุปกรณ์ TPU ใน Cloud VM
ctpu up --name= $TPU_NAME --project= $PROJECT --zone= $ZONE --tpu-size= $TPU_SIZE
--tpu-only --noconf
ในคำสั่งด้านล่างเราฝึกอบรมแบบจำลองเกี่ยวกับงาน MRPC มาตรฐานกาวตั้งแต่เริ่มต้น คุณสามารถเปลี่ยนพารามิเตอร์ MIXTURE_NAME
Gin เพื่อใช้งานหรือส่วนผสมใด ๆ ที่มีให้ในแพ็คเกจของเรา
t5_mesh_transformer
--tpu= " ${TPU_NAME} "
--gcp_project= " ${PROJECT} "
--tpu_zone= " ${ZONE} "
--model_dir= " ${MODEL_DIR} "
--t5_tfds_data_dir= " ${DATA_DIR} "
--gin_file= " dataset.gin "
--gin_file= " models/bi_v1.gin "
--gin_param= " utils.tpu_mesh_shape.model_parallelism = 1 "
--gin_param= " utils.tpu_mesh_shape.tpu_topology = ' ${TPU_SIZE} ' "
--gin_param= " MIXTURE_NAME = 'glue_mrpc_v002' "
รายการงานและส่วนผสมทั้งหมดสามารถรับได้โดยการรัน:
python -c " import t5; print(t5.data.MixtureRegistry.names()) "
นอกจากนี้คุณยังสามารถกำหนดงานและส่วนผสมเพิ่มเติมในไฟล์ใหม่และนำเข้าโดยใช้ --module_import
Flag
อีกทางเลือกหนึ่งคุณสามารถฝึกด้วยไฟล์ TSV ที่แต่ละบรรทัดถูกจัดรูปแบบเป็น <input>t<target>
(ดูด้านบน)
ในการปรับแต่งแบบจำลองหนึ่งในรุ่นที่ผ่านการฝึกอบรมมาก่อนคุณจะต้องผ่านการกำหนดค่าการดำเนินงานของโมเดลที่ผ่านการฝึกอบรมมาก่อนไปยังสคริปต์การฝึกอบรม การกำหนดค่าการผ่าตัดควรส่งผ่านเป็นธง gin_file
มันระบุสถาปัตยกรรมแบบจำลองและพารามิเตอร์อื่น ๆ นอกจากนี้คุณต้องระบุส่วนผสมเพื่อปรับแต่ง ตัวอย่างเช่นในการปรับแต่งรุ่น T5-Small บนส่วนผสม glue_mrpc_v002
โปรดเรียกใช้:
t5_mesh_transformer
--tpu= " ${TPU_NAME} "
--gcp_project= " ${PROJECT} "
--tpu_zone= " ${ZONE} "
--model_dir= " ${MODEL_DIR} "
--t5_tfds_data_dir= " ${DATA_DIR} "
--gin_file= " dataset.gin "
--gin_param= " utils.tpu_mesh_shape.model_parallelism = 1 "
--gin_param= " utils.tpu_mesh_shape.tpu_topology = ' ${TPU_SIZE} ' "
--gin_param= " MIXTURE_NAME = 'glue_mrpc_v002' "
--gin_file= " gs://t5-data/pretrained_models/small/operative_config.gin "
เส้นทางจุดตรวจสอบที่ผ่านการฝึกอบรมมาก่อนถูกรวมอยู่ในการกำหนดค่าการผ่าตัด
นอกจากนี้คุณยังสามารถกำหนดงานและส่วนผสมเพิ่มเติมในไฟล์ใหม่และนำเข้าโดยใช้ --module_import
Flag
อีกทางเลือกหนึ่งคุณสามารถปรับแต่งไฟล์ TSV ที่แต่ละบรรทัดถูกจัดรูปแบบเป็น <input>t<target>
(ดูด้านบน) ตัวอย่างเช่นคุณสามารถลองหนึ่งในชุดข้อมูลการแปลที่จับคู่ได้จาก WMT '19 News Commentary 14 ชุดการฝึกอบรม (เช่นภาษาอังกฤษ-ฝรั่งเศส) เมื่อใช้ไฟล์ TSV คุณจะเปลี่ยนธง MIXTURE_NAME
ด้วย:
--gin_param= " utils.run.train_dataset_fn = @t5.models.mesh_transformer.tsv_dataset_fn "
--gin_param= " tsv_dataset_fn.filename = 'gs:/path/to/tsv' "
ในการปรับแต่งด้วยพารามิเตอร์ไฮเปอร์พารามิเตอร์เดียวกับที่เราใช้ในกระดาษ (โดยใช้อัตราการเรียนรู้คงที่ 0.001) คุณสามารถส่งผ่านไฟล์จินนี้ซึ่งรวมอยู่ในแพ็คเกจ T5:
--gin_file="learning_rate_schedules/constant_0_001.gin"
การกำหนดค่าการดำเนินงานสำหรับรุ่นที่ผ่านการฝึกอบรมมาก่อนถูกตั้งค่าเพื่อให้ไม่มีการ จำกัด จำนวนขั้นตอนรถไฟอย่างมีประสิทธิภาพ หากคุณต้องการฝึกอบรมเป็นจำนวนขั้นตอนที่เฉพาะเจาะจงคุณจะต้องผ่านสิ่งนั้นเนื่องจากโมเดลที่ผ่านการฝึกอบรมมาก่อนได้รับการฝึกอบรมมาแล้ว 1,000,000 ขั้นตอนคุณควรระบุจำนวนขั้นตอนทั้งหมดหลังจากการฝึกอบรมล่วงหน้าและ ปรับแต่ง ตัวอย่างเช่นหากคุณต้องการปรับแต่งอีก 10,000 ขั้นตอนคุณควรผ่าน
--gin_param="run.train_steps = 1010000"
คุณยังสามารถใช้ขนาดแบทช์ที่แตกต่างกันสำหรับการปรับแต่ง เราตั้งค่าขนาดแบทช์ตามจำนวนโทเค็นทั้งหมดในชุด โดยค่าเริ่มต้นแบทช์ใช้ความยาวลำดับ 512 ในการตั้งค่าจำนวนโทเค็นในแบทช์คุณควรตั้งค่า
--gin_param = "tokens_per_batch=1048576"
ในการประเมินแบบจำลองในกรอบ T5 คุณต้องใช้ไฟล์ eval.gin
ระบุไดเรกทอรีโมเดลวิธีการถอดรหัสและขั้นตอนการตรวจสอบเพื่อประเมิน ดังนั้นในการประเมินงานกาว MRPC โดยใช้การค้นหาลำแสงบนจุดตรวจ ทั้งหมด ให้ใช้คำสั่งต่อไปนี้:
t5_mesh_transformer
--tpu= " ${TPU_NAME} "
--gcp_project= " ${PROJECT} "
--tpu_zone= " ${ZONE} "
--model_dir= " ${MODEL_DIR} "
--gin_file= " ${MODEL_DIR} /operative_config.gin "
--t5_tfds_data_dir= ${DATA_DIR}
--gin_file= " eval.gin "
--gin_file= " beam_search.gin "
--gin_param= " run.dataset_split = 'validation' "
--gin_param= " utils.tpu_mesh_shape.tpu_topology = ' ${TPU_SIZE} ' "
--gin_param= " MIXTURE_NAME = 'glue_mrpc_v002' "
--gin_param= " eval_checkpoint_step = 'all' "
ในการประเมินจุดตรวจสอบที่เฉพาะเจาะจงเพียงตั้งค่าพารามิเตอร์ eval_checkpoint_step
เป็นจุดตรวจสอบที่เหมาะสม
--gin_param="eval_checkpoint_step = 100000"
คุณยังสามารถใช้ greedy_decode.gin
หรือ sample_decode.gin
แทน beam_search.gin
ในคำสั่งด้านบน
ในการสร้างการทำนายจากแบบจำลองในกรอบ T5 คุณต้องระบุไดเรกทอรีแบบจำลองวิธีการถอดรหัสและขั้นตอนการตรวจสอบที่จะใช้สำหรับการถอดรหัส สมมติว่าคุณมีไฟล์ข้อความของลำดับอินพุตที่เก็บไว้ที่ /path/to/inputs.txt
คำสั่งตัวอย่างจะเป็น:
t5_mesh_transformer
--tpu= " ${TPU_NAME} "
--gcp_project= " ${PROJECT} "
--tpu_zone= " ${ZONE} "
--model_dir= " ${MODEL_DIR} "
--gin_file= " ${MODEL_DIR} /operative_config.gin "
--gin_file= " infer.gin "
--gin_file= " sample_decode.gin "
--gin_param= " input_filename = '/path/to/inputs.txt' "
--gin_param= " output_filename = '/tmp/outputs.txt' "
--gin_param= " utils.tpu_mesh_shape.tpu_topology = ' ${TPU_SIZE} ' "
--gin_param= " infer_checkpoint_step = 'all' "
หากต้องการทำนายด้วยจุดตรวจสอบเฉพาะเพียงตั้งค่าพารามิเตอร์ infer_checkpoint_step
เป็นจุดตรวจสอบที่เหมาะสม
--gin_param="infer_checkpoint_step = 100000"
คุณยังสามารถใช้ beam_search.gin
หรือ greedy_decode.gin
แทน sample_decode.gin
ในคำสั่งด้านบน
นอกจากนี้คุณยังอาจต้องการส่งออก SavedModel
ซึ่งมีประโยชน์สำหรับการให้บริการรุ่นที่ผ่านการฝึกอบรมของคุณ (เช่นเมื่อปรับใช้กับ ML Engine หรือในอิมเมจนักเทียบท่า)
t5_mesh_transformer
--gcp_project= " ${PROJECT} "
--tpu_zone= " ${ZONE} "
--model_dir= " ${MODEL_DIR} "
--use_model_api
--mode= " export_predict "
--export_dir= " /path/to/export/dir "
คำสั่งด้านบนส่งออกจุดตรวจสอบล่าสุดในไดเรกทอรีโมเดล หากต้องการส่งออกจุดตรวจสอบเฉพาะให้เพิ่มธงต่อไปนี้:
--checkpoint_mode= " specific "
--checkpoint_steps=1000000
สมุดบันทึก T5-deploy แสดงให้เห็นถึงการส่งออกโมเดล SavedModel
และบรรจุในภาพนักเทียบท่าสำหรับการให้บริการ
หากคุณต้องการใช้ GPU แทน TPUs คุณสามารถแก้ไขคำสั่งข้างต้นได้โดยการลบธงเฉพาะ TPU ( --tpu
, --tpu_zone
, --gcp_project
) และการตั้งค่า GIN Params สำหรับ mesh_shape
และ mesh_devices
ตามการตั้งค่าที่คุณต้องการ .
ตัวอย่างเช่นหากเครื่องของคุณสามารถเข้าถึง 6 GPU และคุณต้องการทำแบบจำลองแบบ 3 ทางและความเท่าเทียมกันแบบ 2 ทางคำสั่งการปรับจูนด้านบนจะกลายเป็น:
t5_mesh_transformer
--model_dir= " ${MODEL_DIR} "
--t5_tfds_data_dir= " ${DATA_DIR} "
--gin_file= " dataset.gin "
--gin_param= " utils.run.mesh_shape = 'model:3,batch:2' "
--gin_param= " utils.run.mesh_devices = ['gpu:0','gpu:1','gpu:2','gpu:3','gpu:4','gpu:5'] "
--gin_param= " MIXTURE_NAME = 'glue_mrpc_v002' "
--gin_file= " gs://t5-data/pretrained_models/small/operative_config.gin "
ด้วย GPU เดียวคำสั่งคือ:
t5_mesh_transformer
--model_dir= " ${MODEL_DIR} "
--t5_tfds_data_dir= " ${DATA_DIR} "
--gin_file= " dataset.gin "
--gin_param= " utils.run.mesh_shape = 'model:1,batch:1' "
--gin_param= " utils.run.mesh_devices = ['gpu:0'] "
--gin_param= " MIXTURE_NAME = 'glue_mrpc_v002' "
--gin_file= " gs://t5-data/pretrained_models/small/operative_config.gin "
เราให้บริการการกำหนดค่าสำหรับการทดลองทั้งหมดในกระดาษใน GS: // T5-Data/การทดลอง โฟลเดอร์ experiments
มีไดเรกทอรีย่อยที่แตกต่างกันซึ่งสอดคล้องกับส่วนต่าง ๆ ในกระดาษของเรา ตัวอย่างเช่น gs: // t5-data/การทดลอง/วัตถุประสงค์มีการทดลองจากส่วน 3.3 ("วัตถุประสงค์ที่ไม่ได้รับการดูแล") แต่ละไดเรกทอรีย่อยของ objectives
มีการกำหนดค่าการผ่าตัดสำหรับการทดลองบางอย่าง (ที่พูด "การทดลอง" อย่างหลวม ๆ เป็นหนึ่งในแถวในหนึ่งในตารางในกระดาษของเรา)
สมมติว่าคุณต้องการทำซ้ำผลลัพธ์สำหรับวัตถุประสงค์ "การสร้างแบบจำลองภาษาคำนำหน้า" (แถวแรกในตารางที่ 4) การกำหนดค่าการดำเนินการสำหรับการทดลองนั้นมีอยู่ใน GS: // T5-DATA/การทดลอง/วัตถุประสงค์/OBJ-PREFIX_LM ในไดเรกทอรีพื้นฐานมีการกำหนดค่าการผ่าตัดสำหรับการฝึกอบรมรุ่นก่อน (gs: //t5-data/experiments/objectives/obj-prefix_lm/operative_config.gin) จากนั้นมีไดเรกทอรีย่อยสำหรับส่วนผสมการปรับแต่งแบบปลายน้ำแต่ละอันที่เราพิจารณาซึ่งแต่ละอันมีการกำหนดค่าของตัวเอง (ตัวอย่างเช่น gs: //t5-data/experiments/objectives/obj-prefix_lm/cnn_dailymail_v002/operative_config.gin ). ในการเรียกใช้การทดลองนี้ก่อนฝึกอบรมรุ่นก่อนด้วยการกำหนดค่าการฝึกอบรมล่วงหน้า:
export PRETRAIN_MODEL_DIR= " ${BUCKET} /obj-prefix_lm "
t5_mesh_transformer
--tpu= " ${TPU_NAME} "
--gcp_project= " ${PROJECT} "
--tpu_zone= " ${ZONE} "
--model_dir= " ${PRETRAIN_MODEL_DIR} "
--gin_file= " gs://t5-data/experiments/objectives/obj-prefix_lm/operative_config.gin "
--gin_param= " utils.tpu_mesh_shape.model_parallelism = 1 "
--gin_param= " utils.tpu_mesh_shape.tpu_topology = ' ${TPU_SIZE} ' "
จากนั้นคุณสามารถปรับแต่งโมเดลที่ผ่านการฝึกอบรมล่วงหน้าใน CNN/Daily Mail ได้เช่น SO:
export FINETUNE_MODEL_DIR= " ${BUCKET} /obj-prefix_lm/cnn_dailymail_v002 "
t5_mesh_transformer
--tpu= " ${TPU_NAME} "
--gcp_project= " ${PROJECT} "
--tpu_zone= " ${ZONE} "
--model_dir= " ${FINETUNE_MODEL_DIR} "
--gin_file= " gs://t5-data/experiments/objectives/obj-prefix_lm/cnn_dailymail_v002/operative_config.gin "
--gin_param= " init_checkpoint = ' ${PRETRAIN_MODEL_DIR} /model.ckpt-524288' "
--gin_param= " utils.tpu_mesh_shape.model_parallelism = 1 "
--gin_param= " utils.tpu_mesh_shape.tpu_topology = ' ${TPU_SIZE} ' "
ตัวแปรการฝึกอบรมบางอย่างจำเป็นต้องตั้งค่าธงหลายครั้งในเวลาเดียวกัน สำหรับแต่ละตัวแปรด้านล่างให้เพิ่มกลุ่มของธงลงใน ./third_party/py/t5/google/scripts/run_finetune.sh
การฝึกอบรมที่กำหนด
--train_gin_param= " mesh_train_dataset_fn.seed= ${SEED} "
--train_gin_param= " utils.run.skip_seen_data = True "
รูปแบบภาษา
--objective= " lm "
--train_gin_param= " utils.run.model_type = " lm " "
เราได้เปิดตัวจุดตรวจสอบต่อไปนี้สำหรับรุ่นที่ผ่านการฝึกอบรมมาก่อนที่อธิบายไว้ในบทความของเรา:
ดูที่นี่สำหรับรายการจุดตรวจสอบแบบจำลองที่ผ่านการฝึกอบรมก่อนการทดลองเพิ่มเติม
หากคุณขยายหรือใช้งานนี้โปรดอ้างอิงกระดาษที่มีการแนะนำ:
@article { 2020t5 ,
author = { Colin Raffel and Noam Shazeer and Adam Roberts and Katherine Lee and Sharan Narang and Michael Matena and Yanqi Zhou and Wei Li and Peter J. Liu } ,
title = { Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer } ,
journal = { Journal of Machine Learning Research } ,
year = { 2020 } ,
volume = { 21 } ,
number = { 140 } ,
pages = { 1-67 } ,
url = { http://jmlr.org/papers/v21/20-074.html }
}