close
ข้ามไปเนื้อหา

PyTorch

จากวิกิพีเดีย สารานุกรมเสรี
PyTorch
ผู้ออกแบบAdam Paszke, Sam Gross, Soumith Chintala, Gregory Chanan
นักพัฒนาPyTorch Foundation
วันที่เปิดตัวกันยายน 2016; 9 ปีที่แล้ว (2016-09)
ภาษาที่เขียนภาษาไพทอน, ภาษาซีพลัสพลัส, CUDA
ระบบปฏิบัติการลินุกซ์, แมคโอเอส, ไมโครซอฟท์ วินโดวส์
แพลตฟอร์มIA-32, x86-64, ARM64
ภาษาภาษาอังกฤษ
ประเภทไลบรารีสำหรับการเรียนรู้เชิงลึก
สัญญาอนุญาตBSD-3-Clause
เว็บไซต์pytorch.org
ที่เก็บข้อมูลgithub.com/pytorch/pytorch

PyTorch เป็นไลบรารีโอเพนซอร์ซสำหรับการเรียนรู้ของเครื่องและการเรียนรู้เชิงลึก ใช้ภาษาหลักคือภาษาไพทอน และรองรับการประมวลผลด้วยหน่วยประมวลผลกราฟิกผ่านเทคโนโลยีอย่าง CUDA PyTorch พัฒนาต่อยอดจากแนวคิดของ Torch และเป็นที่ใช้ในงานวิจัยและการพัฒนาแบบจำลองปัญญาประดิษฐ์ เช่น คอมพิวเตอร์วิทัศน์ การประมวลภาษาธรรมชาติ และแบบจำลองภาษาขนาดใหญ่[1][2]

เดิม PyTorch ได้รับการพัฒนาโดยกลุ่มวิจัยปัญญาประดิษฐ์ของเฟซบุ๊ก ซึ่งต่อมาเป็นส่วนหนึ่งของเมตาแพลตฟอมส์ ก่อนย้ายไปอยู่ภายใต้การกำกับดูแลของ PyTorch Foundation ซึ่งเป็นองค์กรย่อยของ Linux Foundation ในปี ค.ศ. 2022[3] จุดเด่นของ PyTorch ได้แก่ การคำนวณด้วยเทนเซอร์ที่คล้ายกับ NumPy การสร้างกราฟคำนวณแบบพลวัต และระบบการหาอนุพันธ์อัตโนมัติที่เรียกว่า Autograd ซึ่งช่วยคำนวณเกรเดียนต์สำหรับการฝึกโครงข่ายประสาทเทียม[1][4]

ประวัติ

[แก้]

PyTorch มีรากฐานจาก Torch ซึ่งเป็นไลบรารีการเรียนรู้ของเครื่องที่ใช้ภาษา Lua เป็นส่วนติดต่อหลัก และได้รับความนิยมในงานวิจัยด้านการเรียนรู้เชิงลึกช่วงก่อนการเติบโตของระบบนิเวศภาษาไพทอน[5] PyTorch รุ่นอัลฟาเผยแพร่ในเดือนกันยายน ค.ศ. 2016 ผ่านคลังโค้ดบน GitHub[6] ต่อมาในปี ค.ศ. 2017 สื่อเทคโนโลยีรายงานว่าเฟซบุ๊กนำ PyTorch มาเป็นเครื่องมือการเรียนรู้ของเครื่องที่เน้นการใช้งานร่วมกับภาษาไพทอนและหน่วยประมวลผลกราฟิก[7]

ในเดือนกันยายน ค.ศ. 2017 เฟซบุ๊กและไมโครซอฟท์ประกาศโครงการ Open Neural Network Exchange หรือ ONNX เพื่อช่วยให้แบบจำลองการเรียนรู้เชิงลึกสามารถถ่ายโอนระหว่างเฟรมเวิร์กและรันไทม์ที่แตกต่างกันได้ง่ายขึ้น[8] ในเดือนมีนาคม ค.ศ. 2018 โครงการ Caffe2 ซึ่งเป็นเฟรมเวิร์กการเรียนรู้เชิงลึกอีกโครงการหนึ่งของเฟซบุ๊ก ถูกรวมเข้ากับ PyTorch เพื่อรวมแนวทางงานวิจัยและการนำไปใช้งานจริงไว้ในระบบเดียวกัน[9]

ในเดือนกันยายน ค.ศ. 2022 Meta โอนโครงการ PyTorch ไปอยู่ภายใต้ Linux Foundation และจัดตั้ง PyTorch Foundation เป็นบ้านกลางของโครงการ โดยมีวัตถุประสงค์เพื่อสนับสนุนการกำกับดูแลแบบเปิดและลดการผูกกับผู้ขายรายใดรายหนึ่ง[3][10]

PyTorch 2.0 เผยแพร่เมื่อวันที่ 15 มีนาคม ค.ศ. 2023 โดยเพิ่มความสามารถสำคัญคือ torch.compile ซึ่งเป็น API สำหรับคอมไพล์โค้ด PyTorch เพื่อเพิ่มประสิทธิภาพ โดยยังคงประสบการณ์การเขียนแบบ eager mode ที่ผู้ใช้คุ้นเคย[11]

ลักษณะและการออกแบบ

[แก้]

PyTorch ออกแบบให้ผู้ใช้เขียนและตรวจแก้แบบจำลองได้ในรูปแบบที่ใกล้กับโปรแกรมไพทอนทั่วไป งานวิจัยที่นำเสนอ PyTorch ในการประชุม NeurIPS ปี ค.ศ. 2019 อธิบายว่าไลบรารีนี้พยายามผสานความยืดหยุ่นของรูปแบบ imperative programming เข้ากับประสิทธิภาพของระบบคำนวณสมรรถนะสูงและการรองรับตัวเร่งฮาร์ดแวร์ เช่น หน่วยประมวลผลกราฟิก[1]

หน่วยข้อมูลพื้นฐานของ PyTorch คือ เทนเซอร์ (torch.Tensor) ซึ่งเป็นอาร์เรย์หลายมิติที่ใช้แทนข้อมูลและพารามิเตอร์ของแบบจำลอง เทนเซอร์ของ PyTorch มีลักษณะคล้ายอาร์เรย์ของ NumPy แต่สามารถย้ายไปคำนวณบนอุปกรณ์ต่าง ๆ เช่น CPU และ GPU ได้ ขึ้นอยู่กับระบบที่ติดตั้งและแพ็กเกจที่ใช้[2][12]

ระบบ Autograd ของ PyTorch ใช้บันทึกการดำเนินการทางคณิตศาสตร์ในช่วงการคำนวณขาไปของแบบจำลอง แล้วใช้ข้อมูลดังกล่าวเพื่อคำนวณอนุพันธ์ในทิศทางย้อนกลับเมื่อเรียกการคำนวณเกรเดียนต์ กลไกนี้เป็นส่วนสำคัญของการฝึกโครงข่ายประสาทเทียมด้วยวิธีอย่างการแพร่กลับ[4]

องค์ประกอบหลัก

[แก้]

เทนเซอร์

[แก้]

เทนเซอร์ใน PyTorch ใช้เก็บและคำนวณข้อมูลเชิงตัวเลขหลายมิติ เช่น เวกเตอร์ เมทริกซ์ หรือข้อมูลภาพหลายช่องสี การคำนวณด้วยเทนเซอร์เป็นฐานของงานการเรียนรู้เชิงลึก เพราะข้อมูลนำเข้า ค่าน้ำหนักของแบบจำลอง และผลลัพธ์กลางระหว่างชั้นของโครงข่ายมักถูกแทนด้วยเทนเซอร์[1]

โมดูล torch.nn

[แก้]

โมดูล torch.nn ให้ส่วนประกอบสำหรับสร้างโครงข่ายประสาทเทียม เช่น ชั้นเชิงเส้น ฟังก์ชันกระตุ้น ชั้นคอนโวลูชัน และคลาสฐาน nn.Module ผู้ใช้มักนิยามแบบจำลองโดยสร้างคลาสที่สืบทอดจาก nn.Module แล้วกำหนดลำดับการคำนวณในเมท็อด forward()[13]

โมดูล torch.optim

[แก้]

torch.optim เป็นโมดูลที่รวมอัลกอริทึมการปรับค่าเหมาะที่สุดสำหรับฝึกแบบจำลอง เช่น stochastic gradient descent และ Adam อัลกอริทึมเหล่านี้ใช้เกรเดียนต์ที่ได้จาก Autograd เพื่อปรับค่าน้ำหนักของแบบจำลองให้ลดค่าความสูญเสียระหว่างการฝึก[14]

การคอมไพล์และ PyTorch 2

[แก้]

ตั้งแต่ PyTorch 2.0 เป็นต้นมา โครงการได้เพิ่มชุดเครื่องมือคอมไพเลอร์ เช่น TorchDynamo, AOTAutograd, PrimTorch และ TorchInductor โดยเปิดให้ใช้งานผ่าน API torch.compile เป้าหมายคือเพิ่มประสิทธิภาพการฝึกและการอนุมานโดยลดงานซ้ำและแปลงกราฟการคำนวณให้เหมาะกับเครื่องปลายทางมากขึ้น[11][15]

การรองรับฮาร์ดแวร์และระบบปฏิบัติการ

[แก้]

PyTorch รองรับระบบปฏิบัติการหลัก ได้แก่ ลินุกซ์ แมคโอเอส และวินโดวส์ และมีแพ็กเกจสำหรับสถาปัตยกรรมหลายแบบ เช่น x86-64 และ ARM64[16] การเร่งความเร็วด้วยฮาร์ดแวร์มักทำผ่าน CUDA สำหรับ GPU ของ Nvidia นอกจากนี้ PyTorch ยังมีการรองรับแพลตฟอร์มอื่นในระดับต่างกัน เช่น ROCm สำหรับ GPU ของ AMD และ Metal Performance Shaders สำหรับอุปกรณ์ของแอปเปิล[17][18]

ระบบนิเวศและการใช้งาน

[แก้]

PyTorch มีระบบนิเวศของไลบรารีและเครื่องมือที่สร้างบนโครงการหลัก เช่น TorchVision สำหรับงานภาพ TorchAudio สำหรับงานเสียง TorchText สำหรับงานข้อความ และ PyTorch Lightning ซึ่งช่วยจัดระเบียบโค้ดการฝึกแบบจำลอง[19] นอกจากนี้ ไลบรารีของบุคคลภายนอกจำนวนมากยังใช้ PyTorch เป็นฐาน เช่น Pyro ของ Uber สำหรับ probabilistic programming และ Transformers ของ Hugging Face สำหรับแบบจำลองภาษาธรรมชาติ[20][21]

OpenAI ประกาศในปี ค.ศ. 2020 ว่าจะใช้ PyTorch เป็นเฟรมเวิร์กหลักสำหรับงานการเรียนรู้เชิงลึกขององค์กร โดยให้เหตุผลด้านความสะดวกในการวิจัยและการนำไปใช้ในระดับการผลิต[22]

การอนุญาตใช้สิทธิและการกำกับดูแล

[แก้]

PyTorch เผยแพร่ภายใต้สัญญาอนุญาตแบบ BSD-3-Clause ซึ่งอนุญาตให้ใช้ แก้ไข และแจกจ่ายซอฟต์แวร์ได้ภายใต้เงื่อนไขของสัญญาอนุญาต[23] หลังการโอนย้ายไป Linux Foundation โครงการอยู่ภายใต้ PyTorch Foundation ซึ่งเป็นองค์กรที่ดูแลการพัฒนาและระบบนิเวศของ PyTorch ในฐานะโครงการโอเพนซอร์ซ[3]

ความสัมพันธ์กับเฟรมเวิร์กอื่น

[แก้]

PyTorch มักถูกกล่าวถึงร่วมกับเฟรมเวิร์กการเรียนรู้เชิงลึกอื่น เช่น TensorFlow, Keras และ JAX ความแตกต่างสำคัญในช่วงแรกคือ PyTorch เน้นรูปแบบ eager execution และการเขียนโค้ดที่ใกล้กับภาษาไพทอนตามปกติ ขณะที่บางเฟรมเวิร์กในยุคเดียวกันเน้นการสร้างกราฟคำนวณล่วงหน้า งานวิจัยของ PyTorch ระบุว่าการออกแบบแบบ imperative ช่วยให้การทดลองและการตรวจแก้สะดวกขึ้น โดยยังคงให้ประสิทธิภาพสำหรับงานเรียนรู้เชิงลึก[1]

ดูเพิ่ม

[แก้]

อ้างอิง

[แก้]
  1. 1 2 3 4 5 Paszke, Adam; Gross, Sam; Massa, Francisco; Lerer, Adam; Bradbury, James; Chanan, Gregory; Killeen, Trevor; Lin, Zeming; Gimelshein, Natalia; Antiga, Luca; และคณะ (2019). PyTorch: An Imperative Style, High-Performance Deep Learning Library. Advances in Neural Information Processing Systems 32. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite conference}}: CS1 maint: date auto-translated (ลิงก์)
  2. 1 2 "pytorch/pytorch: Tensors and Dynamic neural networks in Python with strong GPU acceleration". GitHub. PyTorch. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite web}}: CS1 maint: date auto-translated (ลิงก์)
  3. 1 2 3 "Meta Transitions PyTorch to the Linux Foundation, Further Accelerating AI's Path to Open Source Project" (ข่าวประชาสัมพันธ์). Linux Foundation. 12 กันยายน 2022. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite press release}}: CS1 maint: date auto-translated (ลิงก์)
  4. 1 2 "Autograd mechanics". PyTorch Documentation. PyTorch Foundation. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite web}}: CS1 maint: date auto-translated (ลิงก์)
  5. Collobert, Ronan; Bengio, Samy; Mariéthoz, Johnny (2002). "Torch: a modular machine learning software library". IDIAP Research Report. IDIAP Research Institute. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite journal}}: CS1 maint: date auto-translated (ลิงก์)
  6. Chintala, Soumith (1 กันยายน 2016). "PyTorch Alpha-1 release". GitHub. PyTorch. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite web}}: CS1 maint: date auto-translated (ลิงก์)
  7. Yegulalp, Serdar (19 มกราคม 2017). "Facebook brings GPU-powered machine learning to Python". InfoWorld. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite news}}: CS1 maint: date auto-translated (ลิงก์)
  8. Quach, Katyanna (7 กันยายน 2017). "Microsoft, Facebook tie the knot on AI to take on Google". The Register. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite news}}: CS1 maint: date auto-translated (ลิงก์)
  9. "Caffe2 Merges With PyTorch". Synced. 2 เมษายน 2018. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite web}}: CS1 maint: date auto-translated (ลิงก์)
  10. Edwards, Benj (12 กันยายน 2022). "Meta spins off PyTorch Foundation to make AI framework vendor neutral". Ars Technica. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite news}}: CS1 maint: date auto-translated (ลิงก์)
  11. 1 2 "PyTorch 2.0: Our next generation release that is faster, more Pythonic and Dynamic as ever". PyTorch Blog. PyTorch Foundation. 15 มีนาคม 2023. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite web}}: CS1 maint: date auto-translated (ลิงก์)
  12. "Tensors". PyTorch Documentation. PyTorch Foundation. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite web}}: CS1 maint: date auto-translated (ลิงก์)
  13. "torch.nn". PyTorch Documentation. PyTorch Foundation. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite web}}: CS1 maint: date auto-translated (ลิงก์)
  14. "torch.optim". PyTorch Documentation. PyTorch Foundation. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite web}}: CS1 maint: date auto-translated (ลิงก์)
  15. "TorchDynamo Deep Dive". PyTorch Documentation. PyTorch Foundation. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite web}}: CS1 maint: date auto-translated (ลิงก์)
  16. "Get Started". PyTorch. PyTorch Foundation. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite web}}: CS1 maint: date auto-translated (ลิงก์)
  17. "Accelerated PyTorch Training on Mac". PyTorch Blog. PyTorch Foundation. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite web}}: CS1 maint: date auto-translated (ลิงก์)
  18. "Installing PyTorch for ROCm". ROCm Documentation. AMD. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite web}}: CS1 maint: date auto-translated (ลิงก์)
  19. "PyTorch Ecosystem". PyTorch. PyTorch Foundation. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite web}}: CS1 maint: date auto-translated (ลิงก์)
  20. "Uber AI Labs Open Sources Pyro, a Deep Probabilistic Programming Language". Uber Blog. Uber. 3 พฤศจิกายน 2017. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite news}}: CS1 maint: date auto-translated (ลิงก์)
  21. "Transformers". Hugging Face Documentation. Hugging Face. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite web}}: CS1 maint: date auto-translated (ลิงก์)
  22. "OpenAI standardizes on PyTorch". OpenAI. 30 มกราคม 2020. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite web}}: CS1 maint: date auto-translated (ลิงก์)
  23. "PyTorch License". GitHub. PyTorch. สืบค้นเมื่อ 10 กรกฎาคม 2026.{{cite web}}: CS1 maint: date auto-translated (ลิงก์)

แหล่งข้อมูลอื่น

[แก้]