Categories
Computer Data

รันโค้ด Jupyter โดยไม่ต้องเปิดหน้าเว็บเบราวเซอร์ทิ้งไว้

Jupyter Notebook เป็นเครื่องมือที่ช่วยให้เรารันตัว Python Notebook ได้ ซึ่งตัวนี้เหมาะกับการเขียนโค้ดเพื่อคำนวณทางด้านวิทยาศาสตร์ หรือทำงานด้าน Data Science และอื่น ๆ เป็นต้น ซึ่งเราจะพบการใช้งานตัว Jupyter Notebook ได้บ่อย ๆ ใน Google Colab

อย่างไรก็ดี การใช้งานตัว Google Colab พบปัญหา เนื่องมาจากตัวฟรี หรือตัวโปรรุ่นล่าง ๆ จะเปิดให้รันบนเบื้องหลังได้ไม่นาน หลังจากนั้นตัวระบบจะตัดไป เพื่อนำทรัพยากรที่มีจำกัดให้กับบุคคลอื่นแทน ดังนั้นแล้วการใช้งาน Jupyter Notebook บนคอมพิวเตอร์ของเรา หรือบนเซิร์ฟเวอร์ของเราเองจะเป็นทางเลือกที่ดีกว่า

เมื่อเราติดตั้งตัว jupyter Notebook ไว้ในคอมพิวเตอร์ของเราแล้ว เราเข้าตัว Notebook ่ผ่านทางหน้าเว็บเบราวเซอร์เพื่อใช้งาน เมื่อเรารันโค้ดที่มีใน Python Notebook แล้วปิดหน้าเว็บเบราวเซอร์ทิ้งไว้ ตัวผลลัพธ์อาจจะไม่ปรากฏบนหน้าจอ หรือเปิดให้รันโค้ดไปซักพักแล้วจะขึ้น Keyboard Interrupt แล้วตัวโค้ดที่รันไว้จะหยุดการทำงาน

แล้วมีวิธีไหนที่จะรันตัวโค้ดที่เขียนอยู่ใน Python Notebook ให้ทำงานอยู่ถึงแม้ว่าเราจะปิดเว็บเบราวเซอร์ไปแล้วล่ะ? จากที่ไปค้นในเน็ตมีอยู่หลายวิธีได้แก่

  1. รันตัวโค้ดผ่านทาง SSH
  2. รันผ่านทาง VNC

วิธีแรกอันนี้ทำไม่ได้ เพราะเซิร์ฟเวอร์ที่ใช้อยู่ไม่ได้เปิดให้เข้าผ่านทาง SSH ดังนั้นแล้ว เราเลือกวิธีที่สองแทน โดยวิธีนี้เอามาจากในเว็บ Towards Data Science แล้วเอามาใช้กับงานเราครับ

แต่ก่อนอื่นติดตั้ง ML workspace หรือติดตั้ง Jupyter Notebook ลงบนเซิร์ฟเวอร์ที่เราใช้งานอยู่ (หรือติดตั้งบนคลาวด์อย่าง DigitalOcean ก็ได้ ถ้าไม่มีสมาชิกก็สมัครสมาชิกก่อน) อย่างไรก็ดีในตัวอย่างนี้เราแนะนำ ML workspace ที่ติดตั้งเป็นตัว Docker Container เพราะมันสะดวกมากกว่า แถมมันอยู่ใน Sandbox ไม่รบกวน OS หลักที่เราใช้งานอยู่

การเริ่มใช้งาน และการเข้าไปใช้งาน VNC

เมื่อติดตั้งเสร็จแล้ว เราเริ่มทำได้โดยเปิดใช้งาน ML workspace ผ่านการใช้คำสั่งของ Docker เอง จากนั้นให้เราเข้าไปใช้งาน ML workspace โดย

  1. เข้าทางหน้าเว็บจากเครื่องคอมพิวเตอร์เครื่องมือ
  2. เมื่อเข้ามาแล้ว เราจะพบหน้าจอ Jupyter Notebook ให้ใส่รหัสผ่านแล้วเข้ามาจะเจอหน้าจอหลักตามภาพแรก
  3. เลื่อนเมาส์ไปยัง Tools ที่มุมบนขวา จากนั้นเลื่อนลงมาจะเจอ VNC ให้เลือกที่ VNC แล้วจะพบหน้าจอเดสก์ท็อปของลินุกซ์ ให้เราคลิกเมาส์ที่ Jupyter Notebook ตามภาพต่อมา
Jupyter Notebook
VNC

การเริ่มรัน Jupyter Notebook

เมื่อเราเข้าไปใช้งาน Jupyter Notebook ผ่านตัว VNC แล้ว ให้เราเลือกไฟล์ Python Notebook ที่เราต้องการ จากนั้นเลือกที่ Run Cells ที่มันรันนาน ๆ (ของเราเป็นการทำ Inference ของ Head Pose Estimation จากไฟล์วิดีโอ)

เมื่อกดเริ่มรันเรียบร้อย ระหว่างที่มันรันอยู่ ให้เราเลือกที่ Disconnect ที่ด้านซ้ายตามลูกศร

Running Jupyter Notebook on VNC

กดปุ่ม Disconnect แล้ว ระบบจะตัดการเชื่อมต่อไป ระหว่างนี้ตัวโค้ดก็ยังรันอยู่ตามปกติโดยที่ไม่เจอการตัดการทำงานของตัวโค้ดเลย ยกเว้นแต่ว่ามีคนไปปิดเครื่องเซิร์ฟเวอร์ หรือไฟดับระหว่างที่รันครับ

สำหรับผู้อ่านที่สนใจ สามารถไปประยุกต์ใช้ได้เลย วิธีนี้ใช้ง่ายดี ไม่ต้องเข้าผ่าน SSH แล้วพิมพ์คอมมานไลน์ให้ยุ่งยากฮะ

By Kittisak Chotikkakamthorn

อดีตนักศึกษาฝึกงานทางด้าน AI ที่ภาควิชาวิศวกรรมไฟฟ้า มหาวิทยาลัย National Chung Cheng ที่ไต้หวัน ที่กำลังหางานทางด้าน Data Engineer ที่มีความสนใจทางด้าน Data, Coding และ Blogging / ติดต่อได้ที่: contact [at] nickuntitled.com