PyTorch
| PyTorch | |
|---|---|
| ผู้ออกแบบ | Adam Paszke, Sam Gross, Soumith Chintala, Gregory Chanan |
| นักพัฒนา | PyTorch Foundation |
| วันที่เปิดตัว | กันยายน 2016 |
| ภาษาที่เขียน | ภาษาไพทอน, ภาษาซีพลัสพลัส, CUDA |
| ระบบปฏิบัติการ | ลินุกซ์, แมคโอเอส, ไมโครซอฟท์ วินโดวส์ |
| แพลตฟอร์ม | IA-32, x86-64, ARM64 |
| ภาษา | ภาษาอังกฤษ |
| ประเภท | ไลบรารีสำหรับการเรียนรู้เชิงลึก |
| สัญญาอนุญาต | BSD-3-Clause |
| เว็บไซต์ | pytorch |
| ที่เก็บข้อมูล | github |
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 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 (ลิงก์) - 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 (ลิงก์) - 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 (ลิงก์) - 1 2 "Autograd mechanics". PyTorch Documentation. PyTorch Foundation. สืบค้นเมื่อ 10 กรกฎาคม 2026.
{{cite web}}: CS1 maint: date auto-translated (ลิงก์) - ↑ 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 (ลิงก์) - ↑ Chintala, Soumith (1 กันยายน 2016). "PyTorch Alpha-1 release". GitHub. PyTorch. สืบค้นเมื่อ 10 กรกฎาคม 2026.
{{cite web}}: CS1 maint: date auto-translated (ลิงก์) - ↑ Yegulalp, Serdar (19 มกราคม 2017). "Facebook brings GPU-powered machine learning to Python". InfoWorld. สืบค้นเมื่อ 10 กรกฎาคม 2026.
{{cite news}}: CS1 maint: date auto-translated (ลิงก์) - ↑ 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 (ลิงก์) - ↑ "Caffe2 Merges With PyTorch". Synced. 2 เมษายน 2018. สืบค้นเมื่อ 10 กรกฎาคม 2026.
{{cite web}}: CS1 maint: date auto-translated (ลิงก์) - ↑ 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 (ลิงก์) - 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 (ลิงก์) - ↑ "Tensors". PyTorch Documentation. PyTorch Foundation. สืบค้นเมื่อ 10 กรกฎาคม 2026.
{{cite web}}: CS1 maint: date auto-translated (ลิงก์) - ↑ "torch.nn". PyTorch Documentation. PyTorch Foundation. สืบค้นเมื่อ 10 กรกฎาคม 2026.
{{cite web}}: CS1 maint: date auto-translated (ลิงก์) - ↑ "torch.optim". PyTorch Documentation. PyTorch Foundation. สืบค้นเมื่อ 10 กรกฎาคม 2026.
{{cite web}}: CS1 maint: date auto-translated (ลิงก์) - ↑ "TorchDynamo Deep Dive". PyTorch Documentation. PyTorch Foundation. สืบค้นเมื่อ 10 กรกฎาคม 2026.
{{cite web}}: CS1 maint: date auto-translated (ลิงก์) - ↑ "Get Started". PyTorch. PyTorch Foundation. สืบค้นเมื่อ 10 กรกฎาคม 2026.
{{cite web}}: CS1 maint: date auto-translated (ลิงก์) - ↑ "Accelerated PyTorch Training on Mac". PyTorch Blog. PyTorch Foundation. สืบค้นเมื่อ 10 กรกฎาคม 2026.
{{cite web}}: CS1 maint: date auto-translated (ลิงก์) - ↑ "Installing PyTorch for ROCm". ROCm Documentation. AMD. สืบค้นเมื่อ 10 กรกฎาคม 2026.
{{cite web}}: CS1 maint: date auto-translated (ลิงก์) - ↑ "PyTorch Ecosystem". PyTorch. PyTorch Foundation. สืบค้นเมื่อ 10 กรกฎาคม 2026.
{{cite web}}: CS1 maint: date auto-translated (ลิงก์) - ↑ "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 (ลิงก์) - ↑ "Transformers". Hugging Face Documentation. Hugging Face. สืบค้นเมื่อ 10 กรกฎาคม 2026.
{{cite web}}: CS1 maint: date auto-translated (ลิงก์) - ↑ "OpenAI standardizes on PyTorch". OpenAI. 30 มกราคม 2020. สืบค้นเมื่อ 10 กรกฎาคม 2026.
{{cite web}}: CS1 maint: date auto-translated (ลิงก์) - ↑ "PyTorch License". GitHub. PyTorch. สืบค้นเมื่อ 10 กรกฎาคม 2026.
{{cite web}}: CS1 maint: date auto-translated (ลิงก์)
แหล่งข้อมูลอื่น
[แก้]- เว็บไซต์ทางการ (ในภาษาอังกฤษ)
- คลังโค้ด PyTorch บน GitHub (ในภาษาอังกฤษ)
