การ Setup Programing Develop Environment ด้วย VScode , Github, Google Drive และ Google Colab Aoddy, November 28, 2023November 28, 2023 หลังๆมานี้ ผมมีความจำเป็นต้องเขียนโปรแกรม แบบจริงๆๆ จังๆๆ เพิ่มมากขึ้น เพราะ โปรเจคส่วนตัวมีส่วนที่เกี่ยวข้อง กับ การพัฒนา Prediction Model โดยเฉพาะ เรื่อง ที่เกี่ยวกับ Algorithmetic Trading โดยใช้ Python บน Jupyter Notebook ซึ่งหลังๆๆมานี่ เวลาต้องย้ายเครื่องพัฒนา เป็นปัญหามาก ทั้งในเรื่องของการเตรียม Environment สำหรับ Development นอกจากนั้นก็ยังมีปัญหา เรื่อง การเก็บ Source Code (Source Control) แล้วบางจังหวะยังไปวนๆๆ เวียนๆๆ กับการใช้ GPU ในการ Training Model เลยตัดสินใจว่าต้องมาจบปัญหานี้ซักที https://unsplash.com/photos/macbook-pro-showing-programming-language-xrVDYZRGdw4 Goals Objective มี VS code เพื่อใช้เป็น Editor หลักในการพัฒนา ทั้ง Pure Python & Jupyter Notebook โดยต่อท่อลงมาใช้บน Notebook Github ผมจำเป็นต้องเอา Source code ขึ้น Github เพื่อช่วยในการเก็บ Source code และ บริหารจัดการการแก้ไข เพิ่มเติม Code ของผมเอง Google Drive นอกจาก Github ที่เอาไว้เก็บ Source code แล้ว ผมก็ยังได้มีการเอา work space ทั้งหมดเก็บไว้บน Google Drive (จ่ายเป็น รายปีประมาณ 10$/ปี ได้พื้นที่อยู่ 100GB) Google Colab ด้วยความที่ต้องพัฒนา Model ต่างๆ โดยใช้ ทรัพยากรบน Google Colab เช่น High Memory, GPU เลยต้องมาพึ่งพาบนนี้ แทน จ่ายเดือนละ 10$ Solutions จาก Goals ทั้งหมดที่ผมต้องการ ค้นไปค้นมา ก็พบว่าเราไม่ใช่คนแรก ที่อยากได้ Environment แบบนี้ ก็เลยไปเจอ คนนี้เข้า https://github.com/amitness/colab-connect/ ซึ่งเค้าก็ได้พัฒนา library colab-connect ขึ้นมา ซึ่งไอ้เจ้า colab-connect อันนี้ ทำหน้าที่ หลักๆๆ อยู่ 3 เรื่อง คือ Map Google Drive ให้เรา ทำ Git authentication ให้ สร้าง Tunnel ระหว่าง Google Colab ยิงตรงมาที่ VS code ที่อยู่บนเครื่องของเรา Steps : ขั้นตอนการทำ แบ่งออกเป็น 2 เรื่องใหญ่ๆ คือ 1. ขั้นตอนการสร้างท่อ 1. ให้กดลิงค์ Notebook ไฟล์ นี้ เพื่อเริ่มติดตั้งและใช้งาน 2. เลือก Runtime Type ที่เราต้องการ ต้องเลือกก่อน เพื่อให้เรารู้ว่าเราจะต้องการใช้ Hardware อะไรบ้าง อย่าง ที่ผมเลือกผมต้องการใช้ GPU 3. ทำตามขั้นตอนในไฟล์ Notebook คือ ติดตั้ง Library colab-connect !pip install -U git+https://github.com/amitness/colab-connect.git 4. ปัญหาอย่างหนึ่ง คือ เวลาสร้าง Tunnel แล้ว ตัว library มัน Random สร้างชื่อ Tunnel มาให้ ทำให้บางที เรามาดูที่ VSCode เราจะหาไม่เจอ ดังนั้นผม เลยอยากจะ สร้างชื่อ Tunnel ของผมเอง แต่ ต้องให้มั่นใจว่าไม่ซ้ำกับของคนอื่นนะครับ โดยการ run command ชุดนี้ เพื่อดูว่า library นี้อยู่ที่ Path ไหนของเรา 5. กำหนดชื่อท่อ เป็นของเราเอง แต่ต้องไปแก้ในไฟล์ library !sed -i 's/--random-name/--name aoddy-tunnel-6656/g' /usr/local/lib/python3.10/dist-packages/colabconnect/colabconnect.py 6. หลังจากนั้น ถึง Run Command เพื่อสร้าง Tunnel สำหรับงานของเรา from colabconnect import colabconnect colabconnect() 7. พอกด Command ด้านบนเสร็จ มันก็จะมี Popup ให้เรากด Permit เพื่อให้ Map Google Drive 8. หลังจากนั้น มันจะสร้าง Github Authentication Code ให้เรา เพื่อยืนยัน การเชื่อมต่อกับทาง Github 9. พอถึงตอนนี้ เราได้ทำการ สร้างเสร็จละ ให้เราเปิด VSCode แล้วเปิด Command Prompt แล้วเลือก ‘Remote-Tunnel: Connect to Tunnel’ เลือก Github แล้วก็เลือก ชื่อ Tunnel ที่เราตั้งไว้ มันจะบอกว่า Online อยู่ สุดท้ายมันจะบอกว่า เชื่อมต่อกับท่อนี้แล้ว โดนดูที่มุมซ้ายล่าง 10. เราต้อง Test ซ่ะหน่อยว่าเรา เชื่อมต่อแล้ว ได้ Resource บน Google Colab ตอนเลือก Environment หรือเปล่า ผ่าน Terminal บน VSCode กด เมนู Terminal -> New Terminal แล้ว พิมพ์ Command 2 อันนี้ คือ nvidia-smi free -h ว่าเห็นได้ว่า เราได้ GPU มาอยู่บนเครื่องเราละ และ ได้ Memory อยู่ 50GB 2. ขั้นตอนการใช้งาน ร่วมกับ Github ตอนเรา Map Drive กับ Google ตัว Library มันจะทำการสร้าง directory colab ไว้บน Google Drive ของเราเพื่อเอาไว้ Mount Path นี้กับ Work Environment ของเรา ดังนั้น หากเข้าไปดูใน Server ผ่าน Terminal เราจะเห็นว่ามี /colab รอเราไว้เลย 1. สร้าง Repository บน Github โดยผมจะไป Fork ตัว Lib colab-connect นี่แหละมา Modify เพื่อให้เราสามารถสร้าง Tunnel เป็นชื่อของเราได้ ก็ได้ Repo นี้มา https://github.com/aoddy/colab-connect 2. พอ Fork เสร็จ ผมก็อยากเอา Code ทั้งหมดบน Github มาอยู่บน VSCode ที่สร้าง Tunnel รอไว้แล้ว และ ไฟล์ที่ Clone มาก็ต้องอยู่บน Google Drive ด้วย 3. พอได้ของมาละ เราก็จะให้ VSCode เปิด Folder บน Remote ขึ้นมา 4. แล้วเราก็เลือก colab-connect แล้วก็กด Ok เราก็ได้ File ทั้งหมดของ โปรเจค นี้มาอยู่บน VS Code 5. ผมจะลองแก้ไฟล์ บน VSCode แล้ว ทำการ Commit/Push ขึ้น Github แล้ว เราจะมาเช็คดูว่า ไฟล์บน Github / Google Drive มีการ Update หรือยัง โดย Code ที่ผมแก้ไขคือ การสร้างตัวแปร มารอรับ การสร้าง Tunnel Name นั่นเอง 6. ใช้ Git Command เพื่อ commit/push code ขึ้น github 7. ตรวจสอบไฟล์ ทั้งบน Github & Google Drive ไฟล์บน Github ก็ถูกแก้ไข ไฟล์บน Google Drive ก็ถูกแก้ไข เช่นกัน สรุป Library colab-connect ตอบโจทย์ทั้งหมด ทั้งเรื่องของการ สร้างท่อ, Mount Google Drive และ เชื่อมต่อไปยัง Github เพื่อช่วยในการทำ Source Control ดังนั้น หลังจากนี้ Code เราก็จะอยู่เป็นที่เป็นทาง หากต้องย้ายเครื่องในการพัฒนาโปรเจค ก็สามารถทำได้โดยง่ายๆๆ ทันที ไม่ต้องกังวล เรื่อง Source หล่น Code หาย อีกต่อไป …. สาธุ Reference : https://github.com/amitness/colab-connect AoddyLifelong learning | Data Analytics | Algorithmic Trading | Quantmania | Wife Lover www.aoddy.com Post Views: 5,298 Development Environment Development Environment