PyTorch

PyTorch
Thiết kế bởi
  • Adam Paszke
  • Sam Gross
  • Soumith Chintala
  • Gregory Chanan
Phát triển bởiMeta AI
Phát hành lần đầutháng 9 năm 2016; 8 năm trước (2016-09)[1]
Phiên bản ổn định
2.5.1[2] Sửa đổi tại Wikidata / 29 tháng 10 năm 2024
Kho mã nguồngithub.com/pytorch/pytorch
Viết bằng
Hệ điều hành
Nền tảngIA-32, x86-64
Ngôn ngữ có sẵnTiếng Anh
Thể loạiThư viện cho học máyhọc sâu
Giấy phépBSD-3[3]
Websitepytorch.org

PyTorch là một framework học máy dựa trên thư viện Torch,[4][5][6] được sử dụng trong lĩnh vực thị giác máy tínhxử lý ngôn ngữ tự nhiên,[7] do Meta AI phát triển và ngày nay là một phần của Linux Foundation.[8][9][10][11] Đây là phần mềm tự do nguồn mở phát hành dựa trên giấy phép BSD đã qua sửa đổi. Mặc dù được phát triển chính yếu ở dạng giao diện ngôn ngữ Python, PyTorch cũng hỗ trợ giao diện C++.[12]

Nhiều phần mềm học sâu được xây dựng theo PyTorch, bao gồm Tesla Autopilot,[13] Pyro của Uber,[14] Hugging Face's Transformers,[15] PyTorch Lightning,[16][17] và Catalyst.[18][19]

PyTorch cung cấp 2 tính năng cao cấp:[20]

Lịch sử

[sửa | sửa mã nguồn]

Meta (trước đó là Facebook) vận hành cả PyTorchConvolutional Architecture for Fast Feature Embedding (Caffe2), nhưng các mô hình được xác định do 2 framework không tương thích với nhau. Dự án The Open Neural Network Exchange (ONNX) do Meta và Microsoft sáng lập tháng 9 năm 2017 cho việc chuyển đổi giữa các framework. Caffe2 sáp nhập vào PyTorch vào cuối tháng 3 năm 2018.[21] Vào tháng 9 năm 2022, Meta thông báo PyTorch sẽ được quản lý bởi PyTorch Foundation - một tổ chức độc lập mới được thành lập nhưng vẫn là công ty con của Linux Foundation.[22]

PyTorch tensor

[sửa | sửa mã nguồn]

PyTorch định nghĩa một lớp (class) gọi là Tensor (torch.Tensor) để lưu trữ và hoạt động trên các mảng số hình chữ nhật đa chiều đồng nhất. PyTorch Tensor giống với mảng NumPy, nhưng có thể vận hành được trên GPU NVIDIA có hỗ trợ CUDA. PyTorch cũng phát triển phương thức hỗ trợ cho các nền tảng GPU khác, ví dụ, ROCm của AMD và Metal Framework của Apple.[23]

PyTorch hỗ trợ nhiều loại tensor phụ khác nhau.[24]

Lưu ý thuật ngữ "tensor" không mang ý nghĩa về tensor trong lĩnh vực toán hay lý.

Module Autograd

[sửa | sửa mã nguồn]

PyTorch sử dụng một phương pháp gọi là vi phân tự động. Một thiết bị ghi hình lại một quá trình diễn ra sau đó nó phát ngược lại để tính toán gradient. Phương pháp này phát huy rất hiệu quả khi dựng các mạng neuron để tiết kiệm thời gian cho một epoch bằng cách vi phân các tham số tại bước chuyển tiếp.

Module Optim

[sửa | sửa mã nguồn]

torch.optim là một module thực hiện các thuật toán tối ưu hóa khác nhau sử dụng các mạng neuron để xây dựng. Hầu hết các phương pháp phổ biến này đã được hỗ trợ, vì thế không cần xây dựng lại chúng từ đầu.

Tính năng autograd của PyTorch giúp dễ dàng xác định được các biểu đồ tính toán và tính gradient, nhưng autograd thô có thể ở level quá thấp để xác định các mạng neuron phức tạp. Đây là lúc module nn phát huy công dụng. Module nn cung cấp các lớp và công cụ để dễ dàng tạo nên các mạng neuron chỉ bằng cách xác định các lớp trong mạng.

PyTorch cũng có các module con hữu ích khác như tiện ích tải dữ liệu và chức năng đào tạo phân tán.

Chương trình sau đây cho thấy chức năng level thấp của thư viện bằng một ví dụ đơn giản.

import torch
dtype = torch.float
device = torch.device("cpu") # Thực hiện tất cả việc tính toán trên CPU
# device = torch.device("cuda:0") # Thực hiện tất cả việc tính toán trên GPU

# Tạo một tensor và điền vào tensor đó các số ngẫu nhiên
a = torch.randn(2, 3, device=device, dtype=dtype)
print(a) # Kết quả tensor A
# Output: tensor([[-1.1884,  0.8498, -1.7129],
#                  [-0.8816,  0.1944,  0.5847]])

# Tạo một tensor và điền vào tensor đó các số ngẫu nhiên
b = torch.randn(2, 3, device=device, dtype=dtype)
print(b) # Kết quả tensor B
# Output: tensor([[ 0.7178, -0.8453, -1.3403],
#                  [ 1.3262,  1.1512, -1.7070]])

print(a*b) # Kết quả phép nhân 2 tensor
# Output: tensor([[-0.8530, -0.7183,  2.58],
#                  [-1.1692,  0.2238, -0.9981]])

print(a.sum()) # Kết quả phép cộng tất cả các giá trị của tensor A
# Output: tensor(-2.1540)

print(a[1,2]) # Xuất giá trị ở dòng 2 cột 3
# Output: tensor(0.5847)

print(a.max()) # Xuất giá trị lớn nhất của tensor A
# Output: tensor(-1.7129)

Code block sau cho thấy một ví dụ về module nn ở level cao hơn. Một mạng neuron với các lớp tuyến tính được định nghĩa trong ví dụ.

import torch
from torch import nn # Nhập module nn từ PyTorch

class NeuralNetwork(nn.Module): # Các mạng neuron được định nghĩa là các class
    def __init__(self): # Các lớp và biến được định nghĩa ở phương thức __init__
        super(NeuralNetwork, self).__init__() # Phải có cho mọi mạng.
        self.flatten = nn.Flatten() # Định nghĩa lớp flatten.
        self.linear_relu_stack = nn.Sequential( # Định nghĩa một stack của lớp.
            nn.Linear(28*28, 512), # Lớp tuyến tính dạng đầu vào và đầu ra
            nn.ReLU(), # ReLU là một trong các hàm kích hoạt được cung cấp bởi module nn
            nn.Linear(512, 512),
            nn.ReLU(),
            nn.Linear(512, 10), 
        )

    def forward(self, x): # Hàm forward.
        x = self.flatten(x)
        logits = self.linear_relu_stack(x)
        return logits

Tham khảo

[sửa | sửa mã nguồn]
  1. ^ Chintala, Soumith (1 tháng 9 năm 2016). “PyTorch Alpha-1 release”.
  2. ^ “Release 2.5.1”. 29 tháng 10 năm 2024. Truy cập 26 tháng 11 năm 2024.
  3. ^ Claburn, Thomas (12 tháng 9 năm 2022). “PyTorch gets lit under The Linux Foundation”. The Register.
  4. ^ Yegulalp, Serdar (19 tháng 1 năm 2017). “Facebook brings GPU-powered machine learning to Python”. InfoWorld. Truy cập ngày 11 tháng 12 năm 2017.
  5. ^ Lorica, Ben (3 tháng 8 năm 2017). “Why AI and machine learning researchers are beginning to embrace PyTorch”. O'Reilly Media. Truy cập ngày 11 tháng 12 năm 2017.
  6. ^ Ketkar, Nikhil (2017). “Introduction to PyTorch”. Deep Learning with Python (bằng tiếng Anh). Apress, Berkeley, CA. tr. 195–208. doi:10.1007/978-1-4842-2766-4_12. ISBN 9781484227657.
  7. ^ “Natural Language Processing (NLP) with PyTorch – NLP with PyTorch documentation”. dl4nlp.info (bằng tiếng Anh). Truy cập ngày 18 tháng 12 năm 2017.
  8. ^ Patel, Mo (7 tháng 12 năm 2017). “When two trends fuse: PyTorch and recommender systems”. O'Reilly Media (bằng tiếng Anh). Truy cập ngày 18 tháng 12 năm 2017.
  9. ^ Mannes, John. “Facebook and Microsoft collaborate to simplify conversions from PyTorch to Caffe2”. TechCrunch (bằng tiếng Anh). Truy cập ngày 18 tháng 12 năm 2017. FAIR is accustomed to working with PyTorch – a deep learning framework optimized for achieving state of the art results in research, regardless of resource constraints. Unfortunately in the real world, most of us are limited by the computational capabilities of our smartphones and computers.
  10. ^ Arakelyan, Sophia (29 tháng 11 năm 2017). “Tech giants are using open source frameworks to dominate the AI community”. VentureBeat (bằng tiếng Anh). Truy cập ngày 18 tháng 12 năm 2017.
  11. ^ “PyTorch strengthens its governance by joining the Linux Foundation”. pytorch.org (bằng tiếng Anh). Truy cập ngày 13 tháng 9 năm 2022.
  12. ^ “The C++ Frontend”. PyTorch Master Documentation. Truy cập ngày 29 tháng 7 năm 2019.
  13. ^ Karpathy, Andrej. “PyTorch at Tesla - Andrej Karpathy, Tesla”.
  14. ^ “Uber AI Labs Open Sources Pyro, a Deep Probabilistic Programming Language”. Uber Engineering Blog (bằng tiếng Anh). 3 tháng 11 năm 2017. Truy cập ngày 18 tháng 12 năm 2017.
  15. ^ PYTORCH-TRANSFORMERS: PyTorch implementations of popular NLP Transformers, PyTorch Hub, 1 tháng 12 năm 2019, truy cập ngày 1 tháng 12 năm 2019
  16. ^ PYTORCH-Lightning: The lightweight PyTorch wrapper for ML researchers. Scale your models. Write less boilerplate, Lightning-Team, 18 tháng 6 năm 2020, truy cập ngày 18 tháng 6 năm 2020
  17. ^ “Ecosystem Tools”. pytorch.org (bằng tiếng Anh). Truy cập ngày 18 tháng 6 năm 2020.
  18. ^ GitHub - catalyst-team/catalyst: Accelerated DL & RL, Catalyst-Team, 5 tháng 12 năm 2019, truy cập ngày 5 tháng 12 năm 2019
  19. ^ “Ecosystem Tools”. pytorch.org (bằng tiếng Anh). Truy cập ngày 4 tháng 4 năm 2020.
  20. ^ “PyTorch – About”. pytorch.org. Bản gốc lưu trữ ngày 15 tháng 6 năm 2018. Truy cập ngày 11 tháng 6 năm 2018.
  21. ^ “Caffe2 Merges With PyTorch”. 2 tháng 4 năm 2018.
  22. ^ Edwards, Benj (12 tháng 9 năm 2022). “Meta spins off PyTorch Foundation to make AI framework vendor neutral”. Ars Technica.
  23. ^ “Introducing Accelerated PyTorch Training on Mac”. pytorch.org (bằng tiếng Anh). Truy cập ngày 4 tháng 6 năm 2022.
  24. ^ “An Introduction to PyTorch – A Simple yet Powerful Deep Learning Library”. analyticsvidhya.com. 22 tháng 2 năm 2018. Truy cập ngày 11 tháng 6 năm 2018.

Liên kết ngoài

[sửa | sửa mã nguồn]
Chúng tôi bán
Bài viết liên quan
Mai - Khi tình yêu không chỉ đơn thuần là tình ~ yêu
Mai - Khi tình yêu không chỉ đơn thuần là tình ~ yêu
Cuộc đời đã khiến Mai không cho phép mình được yếu đuối, nhưng cũng chính vì thế mà cô cần một người đồng hành vững chãi
5 lọ kem chống nắng trẻ hóa làn da tốt nhất
5 lọ kem chống nắng trẻ hóa làn da tốt nhất
Nếu da đã bắt đầu xuất hiện dấu hiệu lão hóa, bạn nên tham khảo 5 lọ kem chống nắng sau
Giải đáp một số câu hỏi về Yelan - Genshin Impact
Giải đáp một số câu hỏi về Yelan - Genshin Impact
Yelan C0 vẫn có thể phối hợp tốt với những char hoả như Xiangling, Yoimiya, Diluc