Pytorch là gì? Làm sao để sử dụng Pytorch hiệu quả giúp giải quyết các bài toán về AI. Cùng Pytorch là gì? Hướng dẫn sử dụng Pytorch giải các bài toán về AI tìm hiểu qua những thông tin quan trọng giúp giải quyết vấn đề nhé!
1. Framework là gì?
Để hiểu được Pytorch là gì, đầu tiên bạn phải biết khái niệm Framework trong lĩnh vực phần mềm. Framework là thuật ngữ Tiếng anh mang nghĩa “bộ khung”. Nó là những đoạn code chức năng cơ bản được các nhà lập trình viết sẵn, tạo nên một tập hợp các thư viện lập trình, thư viện phần mềm, các trình biên dịch, diễn dịch và cả API nữa cung cấp các tiện ích cơ bản giúp lập trình viên thuận tiện và nhanh chóng hơn trong việc xây dựng các phần mềm ứng dụng. Framework ra đời giúp cho nhà lập trình giải quyết được rất nhiều vấn đề từ lập trình nói chung đến lập trình web, app cụ thể nói riêng.
Một cách đơn giản và dễ hiểu hơn, hãy tưởng tượng framework là một khung nhà thô đã được làm sẵn trên một nền móng cơ bản và vững chắc, còn bạn chính là những kỹ sư, việc xây dựng và thiết kế nội thất cho căn nhà như thế nào phụ thuộc hoàn toàn vào chúng ta.
2. Pytorch là gì?
Pytorch chính là một framework hỗ trợ Deep Learning được phát triển bởi Facebook. (Bên cạnh Amazon, Google hay Apple, Facebook được biết đến là đơn vị công nghệ đầu tư rất nhiều nguồn lực cho việc phát triển trí tuệ nhân tạo).
Phát triển Pytorch với mã nguồn mở Facebook đã tạo được một cộng đồng chia sẻ rất lớn. Với nguồn tài nguyên rộng lớn trên cộng đồng này các vấn đề mà bạn đang mắc phải có thể đã có ai đó giải quyết và được chia sẻ lên cộng đồng, hãy dành một chút thời gian để tìm kiếm.
Việc nhiều người sử dụng Pytorch cũng như Tensorflow hay Keras để giải quyết các bài toán về Deep Learning, đã làm chúng trở thành những framework phổ biến nhất hiện nay. Đặc biệt phải kể đến lĩnh vực nghiên cứu, các nhà phát triển hay tác giả hầu như ưu tiên sử dụng Pytorch giúp triển khai các bài toán của mình bởi Pytorch dễ dàng giúp chúng bạn debug và Visuallize cùng với đó là cơ chế Dynamic Graphs cho phép giảm thời gian huấn luyện mô hình.
3. Những lợi ích khi sử dụng Pytorch
Pytorch là gì mà thu hút nhiều người dùng đến vậy? So với Tensorflow hay Keras, số lượng người dùng sử dụng Pytorch cũng không hề kém cạnh bởi những lợi ích Pytorch đem lại.
- Mã nguồn mở: như đã chia sẻ ở trên, nhờ sử dụng mã nguồn mở đã tạo nên một cộng đồng rất lớn với nguồn tài nguyên “chất lượng” và “số lượng”.
- Khả năng xử lý đồ họa: như Numpy đồng thời có kiểm soát CPU & GPU rõ ràng.
- Tập hợp nhiều Pythonic trong tự nhiên.
- Dễ dàng xử lý khi gặp bug.
- Có TouchScript được xem là một tập hợp con của Python. Tập hợp này giúp triển khai các ứng dụng vào quy mô sản xuất từ đó mở rộng quy mô. Đồng thời khi nói đến việc xây dựng các nguyên mẫu với tốc độ nhanh, sử dụng Pytorch được ưu tiên hơn so với Tensorflow vì nó nhẹ hơn.
- Các hàm, cú pháp cơ bản trong Pytorch giúp xử lí các bài toán về AI nhanh chóng.
4. Hướng dẫn sử dụng Pytorch giải các bài toán về AI
Hiểu rõ khái niệm Pytorch là gì nghĩa là bạn đã bước đầu tiếp cận được với loại Framework này. Tuy nhiên để sử dụng Pytorch vào việc giải các bài toán về AI là điều không hề dễ dàng. Với những thông tin mình sắp chia sẻ mong rằng góp phần giúp các bạn bổ sung kiến thức về Pytorch và tự tin sử dụng nó để giải quyết các bài toán về AI nhé!
Muốn sử dụng Pytorch trên bộ xử lý đồ họa GPU bạn bắt buộc phải cài đặt CUDA. Nếu sử dụng trên Google Colab thì thư viện này đã được tích hợp sẵn cho người dùng.
Để giải được các bài toán về AI cần nắm bắt được các hàm, cú pháp cơ bản trong Pytorch. Bên cạnh đó là cách tạo một model, data, cách huấn luyện nó như thế nào và nhiều thứ khác nữa. Sau đây là những hướng dẫn cụ thể.
Tensor trong Pytorch
Tensor cũng giống như Numpy Array nhưng được chuyển sang tensor nhằm mục đích sử dụng tính toán trên GPU . Tương tự Numpy, các phép toán, biến đổi và các hoạt động cơ bản đều có thể thực hiện trên Tensor. Dưới đây là một số cú pháp cơ bản trong Pytorch.
- Create Tensor
Để tạo ra một Tensor có rất nhiều cách, trong đó có việc chuyển đổi List, Numpy sang Tensor. Quan sát hình ảnh dưới đây để thấy một số cú pháp đơn giản tạo ra một Tensor.
- Tensor Operations
Có rất nhiều các operation trên Pytorch như cộng, trừ, nhân, chia, reshape, khởi tạo ngẫu nhiên.
Cách tạo một Model bằng Pytorch
Tạo một Model hay nói cách khác là tạo một mô hình. Bạn có thể tạo một mô hình học sâu dưới dạng một lớp bằng cách kế thừa nn.Module. Ở lớp này có 2 hàm bắt buộc phải có đó là init và forward:
- Init: là hàm khởi tạo nhận vào các biến và tham số giúp bạn có thể khởi tạo các biến, hàm của đối tượng cần khởi tạo. Vì Class (lớp) này kế thừa nn.Module nên trong quá trình khởi tạo một đối tượng mới của Class thì phải khởi tạo lớp kế thừa. Vì lý do đó hàm init luôn có super().__init__(). Ngoài hàm khởi tạo này bạn cũng có thể khởi tạo các layer custom sử dụng trong mô hình, tạo backbone bằng cách load mô hình pretrained, khởi tạo và thực thi một số hàm khác nữa.
- Forward: là hàm nhận nhận vào dữ liệu ban đầu (input). Dữ liệu sẽ đi lần lượt qua các layer mà bạn đã tạo của model và sau đó trả về output của model.
Tạo dataset theo batch size trong Pytorch
- Dataset: Tạo được những mô hình thì bước tiếp theo là tạo dữ liệu chia thành tập train, val, test và cho qua mô hình theo từng batch size nhằm hướng đến mục đích huấn luyện cho mô hình đó. Trước khi custom một Dataset , bạn nên tìm hiểu thư viện hỗ trợ tạo Dataset (thư viện được khuyến khích giới thiệu là torchvision.datasets.ImageFolder) nhưng lưu ý là dữ liệu của bạn đã được chia ra tập train, val, test theo format sau.
Tuy nhiên trong thực tế sẽ không có data để theo format như thế này nên việc bạn biết customize dataset là rất quan trọng. Chúng ta sẽ tạo dataset thành một lớp giống như model trên kia và có 3 lớp bắt buộc.
Đó là :
- init: hàm khởi tạo, nhận vào các tham số và khởi tạo tham số tương ứng.
- len: hàm trả về độ dài dữ liệu.
- getitem: nhận vào index, đọc dữ liệu, xử lý dữ liệu, nhãn và trả về dữ liệu chuẩn để đưa vào model.
- Dataloader: sau khi xong việc tạo đối tượng dataset để dữ liệu tạo thành batch thì phải dùng hàm torch.utils.data.Dataloader của Pytorch.
Một số tham số thường dùng trong hàm là:
- dataset: nhận vào class dataset đã khởi tạo.
- batch_size: thể hiện bạn muốn dữ liệu của mình được generate theo batch bao nhiêu.
- num_workers: khi bạn muốn chạy nhiều tiến trình tùy vào phần cứng của bạn.
- collate_fn: hàm này để định nghĩa cách sắp xếp và kết nối dữ liệu và nhãn tương ứng theo từng lô dữ liệu.
Cách huấn luyện mô hình
Sau khi đã hoàn thành các bước trên, câu hỏi đặt ra là làm sao để mô hình hoạt động. Theo dõi đoạn code mẫu dưới đây để hiểu hơn cách làm.
Ở đoạn code mẫu trên, mô hình này chạy 5 epochs và ở mỗi epoch có:
- Sử dụng model.train(): thiết lập trạng thái huấn luyện.
- Sử dụng vòng for: lấy từng cặp dữ liệu theo từng batch size
- Sử dụng model(x_batch): forward dữ liệu, trả về output tương ứng
- Sử dụng hàm loss: trả về giá trị mất mát, cần tối ưu nó về nhỏ nhất có thể
- Sử dụng loss.backward(): thực hiện back-propagation
- Sử dụng optimizer.step(): cập nhật trọng số
- Sử dụng model.eval(): chuyển trạng thái mô hình sang đánh giá
- Sử dụng vòng lặp: đánh giá
- Ở mỗi vòng lặp ta chỉ forward dữ liệu qua model và tính giá trị loss tại mỗi vòng lặp
Các hàm Loss và Custom hàm Loss trong Pytorch
Pytorch hỗ trợ rất nhiều hàm Loss phổ biến như nn.MSE(),nn.CrossEntropyLoss(), nn.KLDivLoss(), nn.BCELoss, nn.NLLLoss()… cùng với đó vẫn có một số hàm Loss mà Pytorch chưa tiến hành hỗ trợ người dùng.
Các hàm tối ưu trong Pytorch
Tương tự hàm Loss, Pytorch cũng hỗ trợ các hàm tối ưu cho người dùng. Có thể kể đến torch.optim.Adadelta , torch.optim.Adagrad , torch.optim.RMSprop… Không chỉ các hàm, cú pháp cơ bản trong Pytorch được hỗ trợ đến người dùng cũng rất tuyệt vời.
Cách sử dụng GPU
Để giúp việc huấn luyện trở nên nhanh chóng hơn bạn có thể sử dụng cú pháp khi có GPU
- model.cuda()
- x_batch.cuda()
- y_batch.cuda()
5. Kết
Với những chia sẻ trong bài viết hôm nay về Pytorch là gì? Hướng dẫn sử dụng Pytorch giải các bài toán về AI hy vọng các bạn đã nắm được những kiến thức về các hàm, cú pháp cơ bản trong Pytorch, cách tạo một model, data, cách huấn luyện… Hiểu biết một cách thông minh và ứng dụng một cách phù hợp sẽ là chìa khóa giúp các bạn giải quyết các bài toán về AI. Chúc các bạn thành công nhé!
ONETECH với các kỹ sư AI tài năng của Việt Nam đang thực hiện các dự án về nghiên cứu AI như học máy (Machne learning), học sâu ( Deep Learning) hay mạng nơ-ron mang đến sự phát triển và đóng góp hữu ích cho xã hội. Chúng tôi muốn trở thành một phần trong một xã hội AI trong tương lai. ONETECH tích cực tham gia vào nghiên cứu và phát triển AI không chỉ để phát triển các dự án cho khách hàng mà còn nghiên cứu, xây dựng những dự án nội bộ mang lại những giá trị hữu ích cho xã hội.