Cái này có lẽ là đáy bể mò kim nhưng trong nhóm mình có ai quan tâm đến compilers cho học máy không?
Mình mang tiếng là kỹ sư nhưng trước giờ rất sợ hệ thống (systems engineering). Nên mỗi khi thấy chủ đề compilers thì chạy không còn dép. Nhưng càng làm trong ngành trí tuệ nhân tạo và đưa models vào các thiết bị cạnh (edge devices), mình càng thấy chủ đề compilers quan trọng.
Đại loại là: các phần cứng khác nhau có những yêu cầu khác nhau. CPU khác với GPU khác với TPU khác với một con chip từ ARM. Để model của bạn chạy ngon lành trên một phần cứng nào đó, bạn cần compiler để: 1/ chuyển đổi ứng dụng của bạn từ framework bạn dùng sang ngôn ngữ phần cứng đó hiểu được và 2/ tối ưu hoá ứng dụng đó trên phần ứng đó.
Về mặt lý thuyết, kỹ sư học máy như mình không cần biết về compilers. (Như người lập trình C++ không cần biết về C++ compiler để viết C++). Nhưng ngành học máy vẫn còn non trẻ, nên hiểu về compilers có thể giúp kỹ sư học máy chạy model của họ trên thiết bị họ muốn một cách hiệu quả.
Mình dành khá nhiều thời gian 3 tháng vừa qua học về compilers cho học máy từ nhiều người chuyên sâu trong ngành này. Đây là bài mình viết tóm tắt những gì mình học được. Bài viết hướng đến những người chưa hiểu sâu về compilers, như mình 3 tháng trước đây. Hy vọng bài viết có ích cho bạn!
Mình cũng đang học về mảng này, nên bạn nào có ý kiến đóng góp hay gợi ý nào mình cảm ơn.
machine learning compiler 在 BorntoDev Facebook 的最讚貼文
เคยไหม ? อยากเริ่มเขียน Python นะ อยากทำ Machine Learning จัง อยากลองสร้าง AI หรือว่าเห็น Data Science กำลังมา ก็อยากลองทำเหมือนกัน 🤔
.
💭 โห มีโปรเจกต์ที่อยากทำในหัวเยอะมาก แบบว่าอันนั้นก็น่าทำ อันนี้ก็น่าลอง อันนี้ก็เรียนรู้ไว้ก็ดีอะ ...แต่ขี้เกียจลงโปรแกรม ก็เลยไม่ได้เริ่มกับเขาสักที
.
👉 ถ้าคุณกำลังประสบปัญหานี้ล่ะก็ วันนี้เราขอนำเสนอตัวช่วยดี ๆ ที่จะทำให้การเริ่มเขียน Python ไม่ใช่เรื่องยากและวุ่นวายอีกต่อไป ! ตัวช่วยของเราในวันนี้ก็คือออ…
.
“Google Colab” นั่นเองจ้า เอาล่ะ ถ้าพร้อมไปต่อก็ลุยกันเลยยย !
.
📍 Google Colab คืออะไร ?
.
Google Colaboratory หรือที่มักเรียกกันสั้น ๆ ว่า Google Colab เป็นบริการจาก Google ที่ให้ผู้ใช้งานเขียนโค้ดภาษา Python บน Browser แบบไม่ต้องติดตั้งโปรแกรมอะไรเลย แล้วจะ Save โค้ดเราไว้อยู่บน Drive ทำให้เราสามารถแชร์โค้ดให้คนอื่นดูได้
.
นอกจากนี้ Google Colab ยังมีบริการ GPU มาให้เราเลือกอีกด้วย และถ้าเราจะทำสาย Data, Machine Learning หรือ AI เราก็สามารถ import library ต่าง ๆ ไม่ว่าจะเป็น numpy, matplotlib หรืออื่น ๆ ได้ตามต้องการ
.
และที่สำคัญ ทุกอย่างที่บอกมานั้น ฟรี ! แค่เรามีบัญชีของ Google เท่านั้นจ้า
.
📍 Google Colab ทำอะไรได้บ้าง ?
.
ไปดูฟีเจอร์ที่ Google Colab ทำได้กันดีกว่า ฟิ้ววว
.
🔸 เขียนและรันโค้ด Python
.
อันนี้ของมันแน่อะเนอะ เอาไว้เขียนโค้ด ก็ต้องเขียนโค้ดได้ ซึ่งการเริ่มต้นใช้งาน Google Colab เราจะต้องสร้าง Notebook ขึ้นมาก่อน ซึ่งเจ้า Notebook เปรียบเสมือนสมุดเล่มนึง ที่เราสามารถเขียนและเรียกใช้โค้ดบนนั้นได้ โดยใน Notebook นั้น เราจะเขียนโค้ดบนสิ่งที่เรียกว่า Code Cell
.
อ่านข้อมูลเพิ่มเติมได้ที่
https://colab.research.google.com/notebooks/basic_features_overview.ipynb
.
🔸 รองรับการเขียนสมการคณิตศาสตร์
.
แน่นอนว่า ในศาสตร์ของ Machine Learning, AI หรือแม้แต่งานสาย Data ยิ่งศึกษาลึกขึ้น ก็จะพบกับทั้งสูตรและสมการมากมายเต็มไปหมด และมันก็ต้องมีสักครั้งแหละ ที่เราอยากจะ Comment สมการเหล่านั้นซะเหลือเกิน ซึ่ง Google Colab ทำได้ ! โดยเราสามารถใช้ Text Cell เพื่อเขียนสมการคณิตศาสตร์ได้ด้วย Markdown Language นั่นเอง
.
อ่านข้อมูลเพิ่มเติมได้ที่
https://colab.research.google.com/notebooks/markdown_guide.ipynb
.
🔸 แชร์ Notebook ผ่าน Google Link
.
อย่างที่เกริ่นไปก่อนหน้านี้ เนื่องจาก Notebook ของเราถูกเก็บไว้บน Drive เพราะงั้นเราจึงสามารถแชร์ลิงก์ให้คนอื่นเข้ามาดู Notebook ของเราได้ง่าย ๆ เหมือนตอนเราใช้บริการ Google Docs หรือ Slides แล้วแชร์ลิงก์ให้เพื่อเข้ามาดูจ้า
.
🔸 Import ข้อมูลจาก Google Drive
.
ต่อจากข้อเมื่อกี้ ในเมื่อเป็นบริการจาก Google เหมือนกัน เจ้า Google Colab จึงรองรับการเชื่อมต่อกับ ดังนั้น Google Drive ไม่ว่าจะ Import หรือ Export ตัว Notebook ก็สะดวก แถมถ้าจะ Import ข้อมูลก็ทำได้เช่นกัน นอกจากนี้ ยัง Import ข้อมูลจาก External Data แหล่งอื่น ๆ ได้อีกนะ
.
อ่านข้อมูลเพิ่มเติมเกี่ยวกับ Drive และ External Data อื่น ๆ ได้ที่
https://colab.research.google.com/notebooks/io.ipynb
.
🔸 รองรับ TensorFlow
.
TensorFlow เป็น Library ประเภท Open-source จาก Google ที่ใช้ภาษา Python สำหรับคำนวณสูตรคณิตศาสตร์ต่าง ๆ รวมถึงอัลกอริทึมเพื่อพัฒนา Machine Learning ซึ่ง Google Colab เองก็สามารถ Import TensorFlow เข้ามาใช้ได้เช่นกัน
.
อ่านข้อมูลเพิ่มเติมได้ที่
https://colab.research.google.com/notebooks/tensorflow_version.ipynb
.
🔸 ใช้งาน Google Colab ร่วมกับ GitHub
.
สาย Dev อย่างเราคงคุ้นชินกับ GitHub กันพอสมควร (หรือถ้าเพื่อน ๆ มือใหม่ก็คงเคยได้ยินคำว่า Git กับ GitHub กันมาบ้าง) ซึ่งที่นี่ เราสามารถ Import Notebook จาก GitHub เข้ามายัง Google Colab ได้ รวมถึง Publish Notebook ของเราบน GitHub ได้เช่นกันจ้า
.
อ่านข้อมูลเพิ่มเติมได้ที่ https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb
.
📍 อธิบายเพิ่มเติม
.
แอดขอเสริมสำหรับเพื่อน ๆ ที่มือใหม่ ภาษา Python เป็นภาษาประเภท Interpreted Language ซึ่งจะอ่านโค้ดทีละคำสั่ง แล้วจะมี Interpreter แปลงเป็นภาษาเครื่องเพื่อดำเนินการเลยคำสั่งนั้น ๆ เลย 💻
.
ต่างจากภาษาที่ใช้ Compiler เช่น C, C++, C#, Java ฯลฯ ที่จะต้องเขียนโค้ดให้เสร็จก่อน แล้วค่อยแปลงไฟล์เป็นไฟล์ Execution (ที่เราจะคุ้นหน้าคุ้นตาในรูปแบบของไฟล์ .exe) เพราะ Compiler จะแปลงทีเดียวทั้งไฟล์
.
กลับมาที่ Python พอเป็นแบบนั้นแล้ว ตัว Google Colab ที่มีหน้าตาเป็น Code Cell นั้น เมื่อเราพิมพ์โค้ดลงไป จึงกด Run เพื่อดูผลลัพธ์ได้เลยนั่นเอง ✨
.
👉 ถ้าใครสนใจ Google Colab ก็สามารถลองใช้งานได้ที่
https://colab.research.google.com/
.
👉 อ่านข้อมูลเพิ่มเติมและส่องฟีเจอร์ต่าง ๆ ได้ที่
https://colab.research.google.com/notebooks/welcome.ipynb
.
เป็นยังไงกันบ้าง เรียกได้ว่า “ครบจบที่บน Browser” จริง ๆ สำหรับ Google Colab ที่เราเอามาฝากวันนี้ 😂 ส่วนเพื่อน ๆ คนไหนกำลัง (อยาก) เริ่มเขียน Python หรือลองสร้างโปรเจกต์อยู่ แอดก็ขอเป็นกำลังใจให้ทุกคนเลยนะคะ ✊📦❤️
.
ถ้าชอบกดไลก์ ใช่กดแชร์ ให้กับแอดและทีม BorntoDev ด้วยน้า 🥺
แล้วเจอกันใหม่ สวัสดีจ้า~
.
borntoDev - 🦖 สร้างการเรียนรู้ที่ดีสำหรับสายไอทีในทุกวัน
machine learning compiler 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最讚貼文
transcompiler ก็คือตัวแปรภาษา ระดับโค้ดสู่โค้ด 🤓
โดยแปลงภาษาเขียนโปรแกรม
จากภาษาระดับสูง ไปเป็นภาษาระดับสูงอีกภาษาหนึ่ง
เช่นโค้ดจาก Python กลายเป็นโค้ด C++
โค้ดจาก Java กลายเป็น Kotlin เป็นต้น
.
transcompiler จะต่างกับ compiler แบบดั้งเดิม
เพราะ compiler แบบเดิม
ที่แปลจากภาษาระดับสูงไปเป็นภาษาระดับต่ำ (assembly)
แต่กรณีคือโค้ดภาษาระดับสูงสู่ โค้ดภาษาระดับสูงด้วยกัน
.
ในตอนนี้เราสามารถใช้ transcompiler
ที่เบื้องหลังคือ AI ให้ทำการแปลงโค้ดให้ได้นะ
มันเป็นผลงานวิจัยของทีม facebook เกี่ยวกับ AI ล่าสุดเลย
ศาสตร์ที่ใช้คือ deep learning
.
เทคนิคที่ใช้
✔ โมเดลแบบ sequence-to-sequence (seq2seq) ด้วย attention
✔ เทรนโดยใช้แนวทาง unsupervised machine translation ตามที่งานวิจัยเสนอซึ่งมี 3 ขั้นตอนได้แก่
- Cross-lingual Masked Language Model pretraining
- Denoising auto-encoding
- Back-translation
✔ data set ที่ใช้ เทรน เป็นโค้ดของ github
.
.
ตามรูปที่เห็นในโพสต์จะเห็นว่า
✔ โค้ดในภาษา python ได้ประกาศฟังก์ชั่น SumOfKsubArray
แล้วได้ถูกแปลงเป็นโค้ดในภาษา C++ ได้อย่างทึ่ง
✔ อย่าง deque() ถูกแปลงเป็น deque
แล้วแปลงการเรียกใช้ [] ใน python ให้เป็นการเรียกฟังก์ชั่น front, back, pop_back และ push_back ในภาษา C++
✔ แปลงการใช้ประโยค for loop ไสตล์ python ไปเป็น for loop ในภาษา C++
.
.
สนใจก็ไปอ่านวิจัยของทีม facebook ได้ที่นี้
https://arxiv.org/abs/2006.03511
.
.
.
.
.
+++++ขั่วโมงขายของ++++
สำหรับใครที่ไม่อยากตกเทรนเรื่อง AI
😻 ก็จะแนะนำหนังสือขายดี "AI ไม่ยาก เรียนรู้ด้วยเลขม. ปลาย"
ไม่ต้องมีความรู้เรื่องโค้ดดิ้ง ขอให้มีพื้นฐานเลข ม. ปลาย ก็อ่านได้
ก็สั่งซื้อ ebook ได้ที่นี้ (ขออภัยยังไม่มีเล่มกระดาษขาย)
👉 https://www.mebmarket.com/web/index.php?action=BookDetails&data=YToyOntzOjc6InVzZXJfaWQiO3M6NzoiMTcyNTQ4MyI7czo3OiJib29rX2lkIjtzOjY6IjEwODI0NiI7fQ
.
ส่วนตัวอย่างหนังสือ ก็ดูได้ที่
👉 https://drive.google.com/file/d/1zG64QAuPKtnWu-Jizn4i2JYUbHnHa8cJ/view?usp=sharing
.
ราคาขาย 295 บาท ฿
แต่ถ้าซื้อผ่านระบบของ Apple จะแพงขึ้น ราคา 329 บาท ฿
วิธีอ่าน อ่านผ่านแอพหรือโปรแกรมเท่านั้น
.
✍ เขียนโดย โปรแกรมเมอร์ไทย thai programmer