แก้ปัญหา(หนีปัญหา?)โหลดไฟล์ช้าด้วย Google Colab ฉบับจับมือทำ
หลายๆคนคงเคยเจอปัญหากับการโหลดไฟล์ที่ขนาดไม่ใหญ่มาก แต่โหลดยังไงก็ไม่เสร็จซักที ทั้งๆที่เน็ตเราก็ใช้งานได้ปกติ
ผมเลยอยากนำเสนอวิธีโหลดไฟล์ “ทางอ้อม” ที่เร็วกว่าการนั่งรอเป็นชั่วโมงๆโดยการใช้ resource ฟรีที่ Google มีให้เราใช้ นั่นก็คือ การให้ VM ของ Google Colab เป็นตัวกลางในการโหลดไฟล์ให้เรา ซึ่งด้วยพลัง Network ของ Google นั้น จะช่วยให้เราได้ไฟล์ที่เราต้องการมาอย่างรวดเร็ว
มาดูตัวอย่างกัน
ผมพยายามจะโหลดไฟล์หนึ่งจากเว็บ https://www.raspberrypi.org/downloads/ ซึ่งพอกดโหลดไปแล้วสามารถโหลดได้ที่ความเร็วประมาณ 300KB/s เท่านั้น
มาลองแก้ปัญหา(หนีปัญหา?)กันดีกว่า
// สาเหตุที่ผมใช้คำว่าหนีปัญหาเพราะว่า วิธีที่จะทำต่อไปนั้น ไม่ได้เป็นการแก้ปัญหาที่เครื่องเราโหลดไฟล์ไม่ขึ้น หลังทำเสร็จ เครื่องของเราก็ยังคงโหลดไฟล์นั้นไม่ขึ้นเหมือนเดิม เลยคิดว่าไม่เหมือนกับการแก้ปัญหาซักเท่าไร แต่ก็ทำให้เราได้ไฟล์นั้นมาอยู่ดี
ขั้นแรก เปิด Google Colab ขึ้นมาก่อน https://colab.research.google.com/
2. กด NEW PYTHON 3 NOTEBOOK
3. Copy link ที่ใช้ในการโหลดไฟล์นั้น โดยการคลิกขวาที่ปุ่มโหลดแล้ว Copy link address (หรือเข้าไปตรงหน้า Downloads ของ Browser แล้ว Copy link ใต้ชื่อไฟล์มาก็ได้)
4. ใช้ wget ในการโหลดไฟล์ด้วยการพิมพ์คำสั่ง
! wget 'link ที่ Copy มาจากขั้นที่แล้ว'
หลังจากพิมพ์แล้ว ให้รันโดยการกดปุ่มด้านซ้าย หรือกด Shift+Enter
จะเห็นได้ว่า Google Colab โหลดไฟล์ให้เราที่ความเร็ว 18.6MB/s ใช้เวลาโหลดประมาณนาทีเศษๆ เร็วกว่าโหลดเองมากๆ
อธิบาย การใส่ Prefix “!” นั้นเป็นการบอกให้ IPython ไปเรียก Shell command อะไรก็ได้ โดย stdout จะมาโผล่ด้านใน Notebook เลย (สามารถเก็บ stdout ลงตัวแปรได้ด้วยนะ)
5. นำไฟล์ที่โหลดเสร็จแล้วไปไว้ในที่ที่เราสามารถโหลดกลับลงเครื่องเราได้อย่างรวดเร็ว ในที่นี้จะใช้ Google Drive เพื่อความง่าย (เพราะสามารถเชื่อมกับ Colab ได้เลย)
เริ่มจากการเชื่อม Google Drive กับ Google Colab ก่อนด้วยการรันคำสั่ง
from google.colab import drive
drive.mount('/drive')
หลังจากรันแล้วให้เข้าไปในลิงค์ที่ขึ้นมาเพื่อเอา Code สำหรับยืนยันตัวตนมาแปะในช่อง หลังจากแปะแล้วกด Enter ได้เลย
6. มองหาไฟล์ที่เราโหลดมาตอนแรกด้วยการรันคำสั่ง
! ls -la
จะสามารถเห็นไฟล์ที่เราโหลดมาได้ไม่ยาก (น่าจะมีไฟล์เดียวที่ไม่ใช่โฟลเดอร์) ให้ทำการ Copy ชื่อไฟล์ไว้ ในที่นี้เราจะ Copy ชื่อ raspbian_full_latest
7. ย้ายไฟล์ไปไว้ใน Google Drive ของเราด้วยคำสั่ง
! mv 'ชื่อไฟล์' 'Path ที่จะย้ายไป'
สังเกตจากตัวอย่างด้านล่าง Path ที่จะย้ายไปนั้นเป็น /drive/My Drive/ชื่อไฟล์
8. เข้าไปดูผลลัพธ์ใน Google Drive ของเรา จากภาพด้านล่าง จะเห็นได้ว่ามีไฟล์ที่เราต้องการอยู่ในนั้นแล้ว (บางทีไฟล์มันจะขึ้นใน Drive ช้านิดนึง ให้ลอง Refresh ดู แต่จะช้ายังไงก็ไม่ควรเกิน 15–20 วินาที)
9. โหลดไฟล์กลับมาลงเครื่องเราผ่าน Google Drive
จะเห็นได้ว่า ความเร็วที่ได้เป็นไปตามมาตรฐาน Google Drive (ก็แน่สิ!) ซึ่งเร็วกว่าการโหลดตรงๆมาก จากที่เห็นด้านล่าง เราสามารถลดเวลาการโหลดไฟล์จาก 2–3 ชม. เหลือแค่ประมาณ 10 นาที + เวลาที่ใช้ทำตามขั้นตอนก่อนหน้าเท่านั้นเอง (ซึ่งถ้าเข้าใจแล้วน่าจะใช้ไม่เกิน 2–3 นาที)
ทิ้งท้าย
ก็จบไปแล้วสำหรับการ “แก้ปัญหา(หนีปัญหา?)โหลดไฟล์ช้าด้วย Google Colab ฉบับจับมือทำ” หวังว่าจะมีประโยชน์บ้างในยามคับขัน เช่น ต้องโหลดไฟล์เดียวกันพร้อมกันกับเพื่อนหลายๆคนแล้วมันแย่งเน็ตกัน เราก็หนีปัญหาด้วยการเอาเน็ตกูเกิลไปสู้กับเพื่อนซะ ก็ทำให้เราโหลดไฟล์เสร็จก่อนเพื่อนได้ไม่ยาก
ทั้งนี้คิดว่า สำหรับคนที่เคยใช้ Jupyter มาแล้วก็น่าจะคุ้นชินกับ UX/UI ดี หรือคนที่เคยใช้ Unix command มาบ้าง ก็น่าจะสามารถประยุกต์ใช้ในแบบของตัวเองได้ไม่ยาก แต่สำหรับคนที่พึ่งเคยจับ Google Colab ครั้งแรกนั้น ก็หวังว่าบทความนี้จะไม่ยากเกินไปนะครับ
ขอบคุณครับ