ปัญหา+วิธีแก้ รันBERT/ Transformer

TheBrave Yongyee
1 min readJun 6, 2020

--

หลังจากได้ลองรัน BERT มาซักระยะก็จะพบปัญหาค่อนข้างหลายปัญหาอยู่ โดยเฉพาะถ้ารันบนวินโดว์ ถ้าlinuxหรืออย่างอื่นอาจจะเจอปัญหาน้อยกว่า ก็เลยมาลิสต์เป็นข้อ ๆ กับวิธีแก้ให้ เผื่ออนาคตมีใครติดแบบเดียวกัน

ปล. เจ้าของ Blog รันบน Windows10 บน pycharm ใช้python3.6

ขอบคุณรูปจากเนต เพื่อที่ว่า Blog นี้จะได้ดูไม่โล่งโจ้งเกินไป (เครดิต http://www.atimedesign.com/webdesign/bert-google-seo/ )

1.tensorflow.python.framework.errors_impl.NotFoundError: Failed to create a NewWriteableFile: PaperMasterDegree/BERT/XXXXXXXXXXX/path/XXXXXXXX/allfeature_zeroToOne_datastyle-days-in-1month-mp1.0-sw0.5-mlp0.2-df10-mpps6-msl35–10\model.ckpt-0_temp_af281c29bd35479b8c7fbeb3ba3f8c54/part-00000-of-00001.data-00000-of-00001.tempstate6096689756772872948 : The system cannot find the path specified.

ปัญหาคือมันเซฟ check pointไม่ได้ (เช่น เซฟรอบที่1000ก่อนหน้าได้ แต่พอมารอบ2000แล้วเซฟไม่ได้)เกิดจากการที่จำนวนตัวอักษรของdirectoryเรามันยาวเกิดขีดจำกัดของวินโดวส์ วิธีแก้คือ ทำยังไก็ได้ให้pathที่เซฟมันสั้นลง เช่น เปลี่ยนชื่อ datasetให้สั้นลง อะไรงี้ จะได้ไม่ต้องไปยุ่งกับตัวgraphมาก

อย่างปัญหานี้เราก็แก้ชื่อจาก allfeature_zeroToOne_datastyle-days-in-1month ไปเป็นแบบ days1months แล้วcheckpoint ก็จะเซฟได้ปกติ

2. UnicodeEncodeError: ‘ascii’ codec can’t encode character ‘\u2122’ in position 0: ordinal not in range(128)

หรืออะไรทำนองนี้ที่มันมีเขียนว่าunicode errorอ่ะ ทำให้รันไม่ได้

วิธีแก้คือ ตรงช่องterminal ให้รันคำสั่งนี้ทีนึงก่อน

set PYTHONIOENCODING=utf-8

แล้วค่อยสั่งรันไฟล์run โดยพิมพ์ชื่อไฟล์ลงไปในterminal แล้ว enter เพื่อให้มันรันตามปกติ

3.ปัญหายิบย่อย เช่น graph initializeไม่ตรง อะไรเงี่ย อาจจะเกิดจากdata setเปลี่ยนมั้ย อาจจะต้องเริ่ม gen ตัว .his .vocabใหม่ ก็คือลบของเก่าทิ้งให้หมด แล้วรันเฉพาะส่วนgen dataใหม่

หรืออาจจะเกิดจากมีการเซฟ checkpoint เดิมอยู่ใน directory แล้วพอ data มีการเปลี่ยนแปลง มันรันต่อจาก checkpoint เดิมแล้วอาจจะเจอ conflict เราก็อาจจะต้องลบ checkpoint ให้หมด แล้วเริ่มรันใหม่ตั้งแต่1 (ถ้าสมมติมีเวลารันนะ)

เดี๋ยวมาเติมใหม่เรื่อยๆละกันนะ มีอะไรไม่ตรง หรือแนะนำ ก้เม้นไว้ได้เลย

--

--