
ยินดีต้อนรับสู่ Transfer NLP Library กรอบการทำงานที่สร้างขึ้นบน Pytorch เพื่อส่งเสริมการทดลองที่ทำซ้ำและถ่ายโอนการเรียนรู้ใน NLP
คุณสามารถมีภาพรวมของ API ระดับสูงในสมุดบันทึก Colab นี้ซึ่งแสดงวิธีการใช้เฟรมเวิร์กในหลาย ๆ ตัวอย่าง ตัวอย่างที่ใช้ DL ทั้งหมดในสมุดบันทึกเหล่านี้ฝังการตรวจสอบการฝึกอบรม Tensorboard ในเซลล์!
สำหรับตัวอย่างของการฝึกอบรมแบบจำลองก่อนหน้านี้เราให้การสอนแบบเรียกใช้งานสั้น ๆ เกี่ยวกับ bertclassifier finetuning ในสมุดบันทึก colab นี้
mkvirtualenv transfernlp
workon transfernlp
git clone https://github.com/feedly/transfer-nlp.git
cd transfer-nlp
pip install -r requirements.txt
เพื่อใช้การถ่ายโอน NLP เป็นห้องสมุด:
# to install the experiment builder only
pip install transfernlp
# to install Transfer NLP with PyTorch and Transfer Learning in NLP support
pip install transfernlp[torch]
หรือ
pip install git+https://github.com/feedly/transfer-nlp.git
เพื่อให้ได้สถานะล่าสุดก่อนที่จะออกใหม่
เพื่อใช้การถ่ายโอน NLP พร้อมตัวอย่างที่เกี่ยวข้อง:
git clone https://github.com/feedly/transfer-nlp.git
pip install -r requirements.txt
เอกสาร API และภาพรวมของห้องสมุดสามารถดูได้ที่นี่
แกนกลางของไลบรารีทำจากตัวสร้างการทดลอง: คุณกำหนดวัตถุต่าง ๆ ที่การทดสอบของคุณต้องการและตัวโหลดการกำหนดค่าสร้างพวกเขาในวิธีที่ดี สำหรับการวิจัยที่ทำซ้ำได้และการศึกษาการระเหยง่ายห้องสมุดจะบังคับใช้การใช้ไฟล์การกำหนดค่าสำหรับการทดลอง เนื่องจากผู้คนมีรสนิยมที่แตกต่างกันสำหรับสิ่งที่ถือเป็นไฟล์การทดลองที่ดีห้องสมุดอนุญาตให้มีการทดลองที่กำหนดไว้ในหลายรูปแบบ:
ใน Transfer-NLP ไฟล์กำหนดค่าการทดลองมีข้อมูลที่จำเป็นทั้งหมดเพื่อกำหนดการทดสอบทั้งหมด นี่คือที่ที่คุณจะแทรกชื่อของส่วนประกอบต่าง ๆ การทดลองของคุณจะใช้พร้อมกับพารามิเตอร์ไฮเปอร์พารามิเตอร์ที่คุณต้องการใช้ Transfer-NLP ใช้ประโยชน์จากการผกผันของรูปแบบการควบคุมซึ่งช่วยให้คุณสามารถกำหนดคลาส / เมธอด / ฟังก์ชั่นใด ๆ ที่คุณต้องการคลาส ExperimentConfig จะสร้าง DictionNary และติดตั้งวัตถุของคุณตามลำดับ
ในการใช้คลาสของคุณเองภายใน Transfer-NLP คุณต้องลงทะเบียนโดยใช้ @register_plugin Decorator แทนที่จะใช้รีจิสทรีที่แตกต่างกันสำหรับแต่ละส่วนประกอบ (โมเดลตัวโหลดข้อมูล vectorizers, Optimizers, ... ) มีการใช้รีจิสทรีเดียวเท่านั้นที่นี่เพื่อบังคับใช้การปรับแต่งทั้งหมด
หากคุณใช้การถ่ายโอน NLP เป็นการพึ่งพา dev เท่านั้นคุณอาจต้องการใช้มันอย่างประกาศเฉพาะและโทรลง register_plugin() บนวัตถุที่คุณต้องการใช้เมื่อเวลาทำงานทดลอง
นี่คือตัวอย่างของวิธีที่คุณสามารถกำหนดการทดสอบในไฟล์ YAML:
data_loader:
_name: MyDataLoader
data_parameter: foo
data_vectorizer:
_name: MyVectorizer
vectorizer_parameter: bar
model:
_name: MyModel
model_hyper_param: 100
data: $data_loader
trainer:
_name: MyTrainer
model: $model
data: $data_loader
loss:
_name: PyTorchLoss
tensorboard_logs: $HOME/path/to/tensorboard/logs
metrics:
accuracy:
_name: Accuracy
วัตถุใด ๆ สามารถกำหนดได้ผ่านคลาสวิธีการหรือฟังก์ชันที่ได้รับพารามิเตอร์ _name ตามด้วยพารามิเตอร์ของตัวเอง การทดลองจะถูกโหลดและอินสแตนซ์โดยใช้ ExperimentConfig(experiment=experiment_path_or_dict)
ข้อควรพิจารณาบางประการ:
พารามิเตอร์ค่าเริ่มต้นสามารถข้ามไปในไฟล์การทดลอง
หากวัตถุถูกใช้ในสถานที่ต่าง ๆ คุณสามารถอ้างอิงได้โดยใช้สัญลักษณ์ $ ตัวอย่างเช่นที่นี่วัตถุ trainer จะใช้อินสแตนซ์ data_loader ที่อื่น ไม่จำเป็นต้องสั่งซื้อวัตถุ
สำหรับเส้นทางคุณอาจต้องการใช้ตัวแปรสภาพแวดล้อมเพื่อให้เครื่องอื่นสามารถเรียกใช้การทดลองของคุณ ในตัวอย่างก่อนหน้านี้คุณจะเรียกใช้เช่น ExperimentConfig(experiment=yaml_path, HOME=Path.home()) เพื่อสร้างอินสแตนซ์การทดลองและแทนที่ $HOME โดยเส้นทางของเครื่องจักรของคุณ
อินสแตนซ์การกำหนดค่าอนุญาตให้ตั้งค่าที่ซับซ้อนใด ๆ ที่มีคำสั่ง / รายการซ้อนกัน
คุณสามารถดูการทดสอบสำหรับตัวอย่างการตั้งค่าการทดลองที่ตัวโหลด config สามารถสร้างได้ นอกจากนี้เรายังให้การทดลองที่รันได้ใน experiments/
สำหรับการทดลองการเรียนรู้อย่างลึกซึ้งเรามี BaseIgniteTrainer ใน transfer_nlp.plugins.trainers.py เทรนเนอร์พื้นฐานนี้จะใช้แบบจำลองและข้อมูลบางอย่างเป็นอินพุตและเรียกใช้ท่อฝึกอบรมทั้งหมด เราใช้ประโยชน์จากห้องสมุด Pytorch-Ignite เพื่อตรวจสอบเหตุการณ์ในระหว่างการฝึกอบรม (การบันทึกตัวชี้วัดบางอย่างการจัดการอัตราการเรียนรู้รูปแบบจุดตรวจสอบ ฯลฯ ... ) บันทึก Tensorboard ยังรวมอยู่ในตัวเลือกคุณจะต้องระบุเส้นทางพารามิเตอร์ Simple tensorboard_logs ในไฟล์ config จากนั้นเพียงเรียกใช้ tensorboard --logdir=path/to/logs ในเทอร์มินัลและคุณสามารถตรวจสอบการทดลองของคุณในขณะที่กำลังฝึกอบรม! Tensorboard มาพร้อมกับยูทิลิตี้ที่ดีมากเพื่อติดตามบรรทัดฐานของน้ำหนักโมเดลของคุณฮิสโตแกรมการแจกแจงการแสดงภาพการฝังตัว ฯลฯ ดังนั้นเราขอแนะนำให้ใช้มันจริงๆ

เราให้บริการคลาส SingleTaskTrainer ซึ่งคุณสามารถใช้สำหรับการตั้งค่าภายใต้การดูแลใด ๆ ที่เกี่ยวข้องกับงานเดียว เรากำลังทำงานในคลาส MultiTaskTrainer เพื่อจัดการกับการตั้งค่างานที่หลากหลายและ SingleTaskFineTuner สำหรับการตั้งค่าแบบจำลองขนาดใหญ่
นี่คือกรณีการใช้งานเล็กน้อยสำหรับการถ่ายโอน NLP:
ExperimentRunner อนุญาตให้เรียกใช้ชุดการทดลองของคุณตามลำดับและสร้างการรายงานส่วนบุคคล (คุณต้องใช้วิธี report ของคุณในคลาส ReporterABC ที่กำหนดเอง)Module Pytorch และให้ผู้ฝึกสอนจัดการกับส่วนการฝึกอบรม (ในขณะที่ยังคงควบคุมพารามิเตอร์การฝึกอบรมส่วนใหญ่ผ่านไฟล์การทดลอง)ในขณะที่ทดลองกับโมเดล / ข้อมูลของคุณเองการฝึกอบรมอาจใช้เวลาพอสมควร หากต้องการได้รับการแจ้งเตือนเมื่อการฝึกอบรมของคุณเสร็จสิ้นหรือขัดข้องคุณสามารถใช้ห้องสมุดง่าย ๆ Knockknock โดยคนที่ HuggingFace ซึ่งเพิ่มมัณฑนากรที่เรียบง่ายให้กับฟังก์ชั่นการทำงานของคุณเพื่อแจ้งให้คุณทราบผ่านทางหย่อนอีเมล ฯลฯ
ห้องสมุดได้รับแรงบันดาลใจจากการอ่าน "การประมวลผลภาษาธรรมชาติด้วย Pytorch" โดย Delip Rao และ Brian McMahan การทดลองใน experiments การสร้างคำศัพท์และการฝังตัวเพื่อนบ้านที่ใกล้ที่สุดจะถูกนำหรือดัดแปลงจากรหัสที่ให้ไว้ในหนังสือ