เปรียบเทียบ PyTorch กับ TensorFlow ในปี 2022
(assemblyai.com)-
โดยทั่วไปมักพูดกันว่า TensorFlow เหมาะกับงานอุตสาหกรรม ส่วน PyTorch เหมาะกับงานวิจัย แต่ข้อมูลนี้อิงกับมุมมองเก่าแล้ว
-
ข้อพิจารณาเชิงปฏิบัติ: โดยมากสรุปได้เป็นการเปรียบเทียบ 3 ด้าน
→ ความพร้อมใช้งานของโมเดล: มีโมเดลที่เปิดให้ใช้งานสาธารณะมากแค่ไหน
→ โครงสร้างพื้นฐานสำหรับการดีพลอย: สามารถดีพลอยได้มีประสิทธิภาพแค่ไหน
→ ระบบนิเวศ: รองรับสภาพแวดล้อม/ฮาร์ดแวร์ที่หลากหลายเพียงใด
Model Availability
-
ทั้ง PyTorch และ TensorFlow ต่างก็มีคลังโมเดลอย่างเป็นทางการของตัวเอง
-
HuggingFace
→ 85% ใช้งานได้เฉพาะบน PyTorch เท่านั้น และในบรรดาโมเดลที่ไม่ใช่แบบ exclusive ก็มีเพียง 50% ที่ใช้งานได้ มีเพียง 16% ของทั้งหมดที่ใช้กับ TensorFlow ได้ (มีแค่ 8% ที่เป็น TF เท่านั้น)
→ สำหรับ 30 โมเดลยอดนิยมอันดับต้น ๆ ทั้งหมดใช้งานได้บน PyTorch แต่ TensorFlow ใช้งานได้เพียง 18 โมเดลเท่านั้น
- งานวิจัย
→ การใช้งาน PyTorch ในงานวิจัยที่ส่งตีพิมพ์ในแต่ละปีเพิ่มขึ้นอย่างต่อเนื่อง
→ เริ่มจาก 7% ในปี 2017 และในปี 2021 ก็เพิ่มขึ้นจนเกือบ 80%
→ หลายคนเลือก PyTorch เพราะความยากในการใช้งาน TensorFlow 1
→ แม้ปัญหาเหล่านี้จะได้รับการปรับปรุงอย่างมากใน TensorFlow 2 ที่ออกในปี 2019 แต่ PyTorch ก็ได้ยึดตำแหน่งฝั่งงานวิจัยไปแล้ว
→ ในบรรดานักวิจัยที่ใช้ TensorFlow ในปี 2018 มี 55% ที่ย้ายมา PyTorch ในปี 2019
→ ในบรรดานักวิจัยที่ใช้ PyTorch ในปี 2018 มี 85% ที่ยังใช้ PyTorch ต่อในปี 2019
- ตามข้อมูลจาก Papers With Code
→ การใช้งาน TensorFlow ลดลงต่อเนื่อง ขณะที่ PyTorch และเฟรมเวิร์กอื่น ๆ ถูกใช้งานมากขึ้นเรื่อย ๆ
→ แนวโน้มนี้ยังคงต่อเนื่องแม้หลังการออก TensorFlow 2 โดยยังไม่มากพอจะลบภาพความยากที่ผู้ใช้เคยเจอใน TF1
-
สรุปคือในด้านความพร้อมใช้งานของโมเดล PyTorch ครองตลาด
-
ข้อยกเว้นอื่น ๆ
→ GoogleAI ใช้ TensorFlow เป็นหลัก แต่ Google Brain ใช้ JAX/Flax
→ DeepMind ก็ได้นำ JAX มาใช้ และยังพัฒนา Haiku ซึ่งเป็นไลบรารี neural network สำหรับ JAX ด้วย (Sonnet for JAX)
→ JAX: เฟรมเวิร์กที่ Google สร้างแยกขึ้นมา และกำลังได้รับความนิยมในฝั่งงานวิจัย
Deployment
- TensorFlow ถูกออกแบบมาให้เหมาะกับแอปพลิเคชันที่เน้นการดีพลอยตั้งแต่แรก
→ ด้วย TensorFlow Serving, TensorFlow Lite ฯลฯ จึงสามารถดีพลอยไปยังคลาวด์/เซิร์ฟเวอร์/มือถือ/อุปกรณ์ IoT ได้อย่างไม่ลำบาก
- PyTorch เคยล้าหลังมากในมุมของการดีพลอย แต่ในช่วงไม่กี่ปีที่ผ่านมาได้พยายามลดช่องว่างนี้
→ TorchServe และ PyTorch Live
- โดยสรุป ตอนนี้ TensorFlow ยังเหนือกว่าในด้านการดีพลอย
→ โดยเฉพาะการใช้งาน TFLite บนเครื่องโลคัลและอุปกรณ์ Coral เป็นสิ่งที่หลายอุตสาหกรรมยังต้องการอย่างมาก
→ PyTorch Live มุ่งเน้นที่มือถือเท่านั้น และ TorchServe ก็ยังอยู่ในช่วงเริ่มต้น
Ecosystems
- PyTorch
→ มี PyTorch Hub อย่างเป็นทางการ: มีโมเดลหลากหลายทั้ง Audio/Vision/NLP เป็นต้น
→ SpeechBrain: ชุดเครื่องมือเสียงโอเพนซอร์สอย่างเป็นทางการ มีฟีเจอร์มากมาย เช่น ASR/การรู้จำผู้พูด/การยืนยันตัวตน
→ มีเครื่องมือและไลบรารีหลากหลาย รวมถึง Fast.ai
→ TorchElastic: โปรเจกต์ความร่วมมือระหว่าง AWS กับ Facebook
→ TorchX: ไลบรารีสำหรับพัฒนาและดีพลอยแมชชีนเลิร์นนิงอย่างรวดเร็ว
→ PyTorch Lightning: Keras of PyTorch
- TensorFlow
→ TensorFlow Hub อย่างเป็นทางการ: มีโมเดลหลากหลายรวมถึง BERT
→ Model Garden: คลังซอร์สโค้ดสำหรับโมเดล SOTA(State-of-the-ART)
→ TensorFlow Extended(TFX): แพลตฟอร์ม E2E สำหรับการดีพลอยโมเดล
→ Vertex AI: แพลตฟอร์มแมชชีนเลิร์นนิงแบบ Unified ของ Google Cloud
→ Media Pipe: เฟรมเวิร์กแบบ multimodal และ cross-platform สำหรับสร้างแมชชีนเลิร์นนิงไปป์ไลน์ที่รองรับงานอย่างการรู้จำใบหน้า การติดตามมือ และการรู้จำวัตถุ
→ Coral: ชุดเครื่องมือที่สร้างขึ้นเพื่อรองรับผลิตภัณฑ์ที่มี Local AI ในตัว (IOT)
→ TensorFlow.js: ไลบรารี JavaScript สำหรับแมชชีนเลิร์นนิง
→ TensorFlow Cloud: เชื่อมสภาพแวดล้อมการพัฒนาแบบโลคัลเข้ากับ Google Cloud
→ Colab: สภาพแวดล้อมโน้ตบุ๊กบนคลาวด์ (คล้าย Jupyter)
→ Playground: เครื่องมือการศึกษาที่เหมาะสำหรับทำความเข้าใจพื้นฐานของ neural network
→ Datasets: จัดเก็บชุดข้อมูลที่ Google เผยแพร่อย่างสม่ำเสมอ (ผู้ใช้ PyTorch ก็ใช้ได้)
- สรุปคือ TensorFlow เหนือกว่าในด้านระบบนิเวศ
→ เพราะ Google ลงทุนไว้มากตลอดช่วงที่ผ่านมา
→ ทั้งการเชื่อมต่อกับ Google Cloud หรือการพอร์ตไปยังอุปกรณ์อย่าง Coral ก็ทำได้ดีกว่าในบางด้าน
แล้วควรเลือกใช้อันไหนดี?
- ถ้าคุณอยู่ในภาคอุตสาหกรรม การเลือกอาจแตกต่างกันไปตามอุตสาหกรรมที่คุณอยู่ (ต้นฉบับมี flow chart เพื่อช่วยตัดสินใจอย่างง่าย)
→ ถ้าใช้ deep learning ในสภาพแวดล้อมอุตสาหกรรมอยู่แล้ว ก็มักจะใช้ TensorFlow อยู่ก่อนแล้วและใช้ต่อได้เลย
→ แต่ก็อาจพิจารณา PyTorch ได้เช่นกันเพราะมี TorchServe
→ ถ้าเป็นมือถือให้ใช้ PyTorch Live แต่ถ้าเป็นอินพุตเสียง/วิดีโอให้ใช้ TensorFlow
→ ถ้าใช้ AI บน IoT ให้เลือก TensorFlow Lite + Coral
- ถ้าเป็นนักวิจัยล่ะ?
→ มีโอกาสสูงว่าคุณใช้งาน PyTorch อยู่แล้ว และใช้ต่อได้เลย
→ ข้อยกเว้นพิเศษคือถ้าทำ Reinforcement Learning อาจพิจารณา TensorFlow
→ ถ้าไม่อยากใช้ TensorFlow ก็อาจลองพิจารณา JAX
→ ไม่ว่าจะเลือกอะไร ในปี 2022 JAX เป็นสิ่งที่ควรจับตา
- ถ้าเป็นอาจารย์?
→ อาจขึ้นอยู่กับเป้าหมายของหลักสูตร
→ ถ้าต้องการผลิตวิศวกรที่พร้อมใช้งานแมชชีนเลิร์นนิงในงานจริงได้ทันที ให้เลือก TensorFlow
→ ถ้าต้องการให้เข้าใจ deep learning และโมเดล deep learning ให้เลือก PyTorch
- ถ้ากำลังเปลี่ยนสายอาชีพ?
→ ทั้ง PyTorch / TensorFlow ล้วนเป็นตัวเลือกที่ดี
→ ให้เลือกสิ่งที่ใช้งานง่ายกว่าสำหรับตัวเอง
→ หากไม่ได้ผูกติดกับเฟรมเวิร์กใดเป็นพิเศษ TensorFlow ที่เป็นมาตรฐานในอุตสาหกรรมอาจเหมาะกว่า
→ ในตลาดหางาน/รับสมัครงาน ฝั่ง TensorFlow ดูดีกว่า
- ถ้าทำ deep learning เป็นงานอดิเรก?
→ ขึ้นอยู่กับว่าคุณอยากทำอะไร แต่โดยพื้นฐานแล้ว PyTorch เหมาะกว่า
- ถ้าเป็นมือใหม่ด้าน deep learning แบบสุด ๆ ล่ะ?
→ แนะนำให้เริ่มจาก Keras
→ ถ้าต้องการสภาพแวดล้อมที่ใกล้เคียงกับ Python native ให้เลือก PyTorch โดยเฉพาะ PyTorch Lightning
1 ความคิดเห็น
การลองเปรียบเทียบกับประเด็นที่เคยพูดถึงกันในปี 2019/2020 ก็น่าสนุกดีเช่นกัน
สถานะปัจจุบันของเฟรมเวิร์กแมชชีนเลิร์นนิง [2019] https://th.news.hada.io/topic?id=696
ผู้เชี่ยวชาญด้านแมชชีนเลิร์นนิงคาดการณ์ทิศทางของ AI ในปี 2020 https://th.news.hada.io/topic?id=1213
สัมภาษณ์นักวิจัยที่เรียน AI ด้วยตนเองและได้เข้าทำงานที่ Google https://th.news.hada.io/topic?id=1347
ระบบนิเวศ TensorFlow: ตั้งแต่การพัฒนาแมชชีนเลิร์นนิงไปจนถึงการนำขึ้นใช้งานจริง https://th.news.hada.io/topic?id=1757
หลักสูตรแมชชีนเลิร์นนิงแบบเร่งรัดที่ Google สร้างด้วย TensorFlow [ภาษาเกาหลี] https://th.news.hada.io/topic?id=1052