How to set up Jupyter Lab on Huawei cloud

วิธีการติดตั้ง Jupyter Lab บน Huawei Cloud

Pawut Jingjit
Super AI Engineer
3 min readJun 20, 2021

--

สำหรับงานสาย Data Sci หรือ Hackathon ก็ตามที เพื่อนๆมักคุ้นชินกับ การใช้ Google Colab หรือการทำบน Localhost ใช่ไหม

ซึ่งในหลายๆงาน ไม่ว่าจะเป็นงานวิจัย หรือ Hackathon มักจะมี Cloud ให้ใช้ หลายๆคนอาจจะไม่คุ้นชิน ซึ่งคงเป็นเรื่องที่น่าเสียดายมาก ถ้า Facility ที่ได้มาให้คุ้ม

อนึ่ง จริงๆ Cloud ไม่ว่าจะเป็น GCP , AWS , Huawei ก็ Setting คล้ายๆกัน (เพราะเป็น Ubuntu ) บทความนี้จึงสามารถปรับใช้กับ GCP , AWS ได้อีกด้วย

TL;NR

  • ใน Windows OS เราสามารถใช้ Bitvise แทน Putty , FileZilla ได้
  • Jupyter Lab มีบน Anaconda Version ใหม่ ซึ่งจริงๆ เราสามารถ Download & Install Anaconda ก็สามารถใช้ Jupyter Lab ได้เลย
  • Anaconda Version ใหม่ set Path ให้เราเองเวลา Install ไม่ต้องไปแก้ .bashrc อีกต่อไป
  • เพื่อที่จะเรียก Jupyter Lab บน Server จากเครื่องเราได้ ต้องทำการ Bind IP ก่อน

0. รู้จักกับ Bitvise

ปกติเราจะใช้การ SSH (Secure Shell) ผ่าน CMD กันใช่ไหม แต่ SSH ของ window จะ Disconnect เอง เมื่อไม่ได้รับ Response ในระยะเวลาหนึ่ง

หลายๆคนอาจจะแก้ปัญหา ด้วยการใช้ Putty แทน ซึ่งสามารถใช้แทน SSH บน CMD ได้

แต่ตัว Putty ไม่สามารถ FTP ได้ จึงต้อง FTP ผ่าน FileZilla แทน แต่หมายความว่า เราต้อง Login 2 Program ซึ่งถือว่ายุ่งยากระดับหนึ่ง ( แล้วตัว Putty กับ FileZilla นี่ไม่ได้ใช้ง่ายนะ ใช้ครั้งแรกต้องมางมแน่ๆ )

ผู้เขียนบทความจึงเสนอให้ใช้ Bitvise แทน โดยสามารถเป็นได้ทั้ง FTP และ SSH ซึ่ง UX&UI ถือว่าใช้ง่ายอย่างสุดๆ ประเภทที่ ใส่ HOST , Username , Password (Port ก็ไม่ต้องใส่ ถ้าเป็น default) ก็สามารถใช้ได้ทันที

Just Login & get terminal , port ยังไม่ต้องใส่เลย

อนึ่ง OSX , Linux ไม่มี Bitvise ใครใช้ระบบดังกล่าว ต้องใช้วิธี SSH , FTP แบบเดิม

1. Install Anaconda

1.1 Download Anaconda

Anaconda เป็น Starter Package ของ Python ส่วนตัวผู้เขียนบทความ Download ด้วย wget ผ่าน tsinghua.edu

เป็น version ที่อัพเดทในวันที่เขียนบทความ(6/8/2021) ถ้าเพื่อนๆ ใช้บทความนี้อ้างอิงในอนาคตข้างหน้า ควรจะเปลี่ยน Download Link เป็น Link ที่อัพเดทแล้ว

โดยให้เลือก Download Link ที่เป็น Linux-x86_64.sh เพราะเราทำงานบน Ubuntu-64bit

อย่างไรก็ตาม ถ้า tsinghua.edu เกิดเข้าไม่ได้หรือไม่อัพเดท เพื่อนๆยังสามารถ Download ผ่าน Official Website ได้

1.2 Install Anaconda

สำคัญ ถ้าเป็น Version เก่าๆ เราจะต้อง set enviroment path เอง แต่ถ้า version ใหม่ Anaconda จะถามว่า จะให้ set Enviroment path ไหม ให้ตอบ yes ไป

ถ้าลืม set Enviroment Path ตอน Install สามารถ set ผ่านคำสั่งบน ไม่แนะนำให้ set ผ่าน .bashrc เอง

สำคัญ เวลา set Enviroment Path ทุกครั้ง ต้อง Restart Terminal ่ด้วย(ในที่นี้คือปิดแล้วเปิดใหม่)

เมื่อลงเสร็จ ถ้าใช้ conda -V ได้ ถือว่าลงได้ถูกต้องแล้ว

2. Install Jupyter lab

Anaconda version ใหม่ๆ ปกติจะติดตั้ง Jupyter Lab ให้แล้ว สามารถทดสอบเปิดได้ผ่านคำสั่งด้านล่าง

ถ้ายังไม่มี สามารถ Install ได้ผ่าน Package ของ conda

3. Binding IP

ก่อนจะไปขั้นตอนต่อไป ต้องเข้าใจเรื่อง Inbound & Outbound ก่อน

เมื่อเราเรียก Jupyter Lab ผ่าน localhost:8000 ซึ่ง Port 8000 ถือเป็น Inbound เพราะเรียกจาก Host เอง

ทางกลับกัน สมมุติเราเรียก SSH ผ่าน ssh user@IP -p 26 , Port 26 นี้ ถือเป็น Outbound เพราะถูกเรียกจาก Client -> Host

Inbound Port, Outbound Port ถือว่าเป็นคนละ Port กัน การที่เรา Mapping Outbound Port : Inbound Port เรียกว่า “การ Bind IP”

ในที่นี้ เมื่อเราต้องการเรียกใช้งาน Jupyter Lab จาก Server สังเกตว่าเป็นการเรียก Outbound Port ของ Client ไป Inbound Port ของ Server ในกรณีนี้ ถึงต้อง Bind IP

ซึ่งวิธีที่ง่ายที่สุด คือ แก้ config บนใน file jupyter_notebook_config.py

เริ่มจากสร้างไฟล์ Config ของ jupyter (notebook , lab ใช้ไฟล์เดียวกัน) ปกติแล้วจะถูกสร้างที่ /root/.jupyter/jupyter_notebook_config.py
แก้ไข config ผ่าน nano (ระวัง ถ้า config file ไม่ได้อยู่ใน path นี้ ต้องแก้ตามด้วยนะ)
ip = ‘0.0.0.0’ มีความหมายว่า “bind to all IP addresses this computer supports” กล่าวคือ ถ้าเรียก port ใดๆจาก Client จะ Map หา port นั้น บน server เสมอ

4. Start Jupyter Lab Server

เมื่อรัน command jupyter lab อีกครั้ง ถ้า Jupyter Server ทำงานบน NameServer@PORT ถือว่าทำงานได้แล้ว (ถ้าไม่ bind IP จะทำงานบน localhost@PORT) สังเกต token =?? ซึ่งเราจะใช้ token นี้ในขั้นตอนถัดไป

จากนั้น เราจะสามารถเรียก IP.huawei.cloud@8080 ผ่าน Web Browser ได้แล้ว

สังเกตช่อง token เราสามารถนำ token จากขั้นตอนที่ผ่านมาใส่ แล้ว login ได้เลย โดยขั้นตอนนี้ต้องใช้ IP ของ huawei cloud เท่านั้น ไม่สามารถใช้ servername:PORT ได้ ซึ่งเจ้าของบทวามยังหาวิธีแก้ปัญหาไม่เจอ //อ้าว
ถ้าทำทุกอย่างถูกต้อง เราจะสามารถใช้ jupyter lab บน Huawei Cloud ได้แล้ว

หลังจากนี้ก็สามารถใช้ Conda Install เพื่อติดตั้ง Package ที่จำเป็นเหมือนที่เพื่อนๆเคยทำได้เลย

ในส่วนท้ายของบทความนี้ ต้องขอขอบคุณทาง Huawei Cloud และ True Lab Startup Sandbox ที่จัดการแข่งขันที่น่าสนใจ และเพื่อนๆที่อ่านบทความนี้จนจบด้วยนะครับ

PS.เพื่อนๆที่เซิร์ซเจอบทความนี้ ต้องกำลังแข่ง Hackathon อยู่อย่างแน่นอน (เหมือนเจ้าของบทความในวันนั้น) ขอให้เพื่อนโชคดีกับการแข่งนะครับ

Ref

https://www.programmersought.com/article/47726882708/

https://stackoverflow.com/questions/18675907/how-to-run-conda

https://stackoverflow.com/questions/1621457/about-ip-0-0-0-0-in-django

--

--