Chương 1: Lựa chọn Bộ xử lý (Processor/ プロセッサ) trong kỷ nguyên AI – Các phép toán Deep Learning và Phần cứng (Hardware)

Estimated reading: 24 minutes 48 views

Lựa chọn Bộ xử lý và Kiến thức chung trong kỷ nguyên AI…

Chìa khóa là tăng tốc xử lý Phép toán tích lũy (Multiply-Accumulate / 積和演算).

Các phép toán Deep Learning và Phần cứng (Hardware).

_____________________

1. Mở đầu

(a) GPU [Kit phát triển Jetson Orin Nano Super (NVIDIA)]

(b) HAT tích hợp NPU [Raspberry Pi AI HAT+ (Raspberry Pi Foundation)]

(c) Bo mạch tích hợp Vi điều khiển (Microcontroller / マイコン) chứa NPU [FRDM-MCXN947 (NXP Semiconductors)]

(d) Module camera tích hợp NPU [Raspberry Pi AI Camera IMX500 (Raspberry Pi Foundation)]

Ảnh 1: Trong vài năm qua, nhiều loại phần cứng liên quan đến AI đã xuất hiện.

Công nghệ AI và Học sâu (Deep Learning / ディープ・ラーニング) đã trở nên phổ biến rộng rãi trong những năm gần đây. Tuy nhiên, quá trình xử lý chúng đòi hỏi năng lực tính toán (Computing power / 演算能力) rất cao. Hiện tại, phần lớn các quá trình xử lý AI được thực thi trên các máy chủ trang bị GPU mạnh mẽ, sau đó kết quả được nhận về thông qua mạng lưới.

Mặt khác, trong những tình huống yêu cầu sự vận hành chắc chắn, nếu mạng lưới không ổn định, hệ thống có thể sẽ không hoạt động như mong đợi. Để tránh những trường hợp như vậy, quá trình xử lý AI cần được thực hiện độc lập chỉ bằng phần cứng mà bản thân thiết bị đó sở hữu.

Phần cứng liên quan đến AI đã tiến hóa với tốc độ chóng mặt trong những năm gần đây, với nhiều loại thiết bị (Devices / デバイス) liên tục được ra mắt (Ảnh 1). Để khai thác tối đa hiệu năng của những thiết bị này, việc hiểu rõ cách thức phần cứng xử lý các phép toán của AI và Học sâu là điều không thể thiếu.

Trong Phần 1, chúng tôi sẽ giải thích về các phép toán cơ bản của Học sâu và giới thiệu cách mà phần cứng xử lý chúng.

● Rốt cuộc Học sâu là gì?

Trước tiên, chúng ta hãy sắp xếp lại khái quát và mối quan hệ giữa Học máy (Machine Learning / 機械学習), Mạng nơ-ron (Neural Network / ニューラル・ネットワーク) và Học sâu. Mối quan hệ của chúng được thể hiện trong Hình 1.

Hình 1: Mối quan hệ giữa Học máy / Mạng nơ-ron / Học sâu

▶ Học máy (Machine Learning, ML)

・Là thuật ngữ chung chỉ các thuật toán (Algorithms / アルゴリズム) và công nghệ giúp máy tính học hỏi mô hình (Patterns / パターン) và kiến thức từ dữ liệu để đưa ra dự đoán hoặc phán đoán.

▶ Mạng nơ-ron (Neural Network, NN)

・Là một trong những phương pháp thuộc một lĩnh vực của Học máy.

・Mô phỏng cơ chế thần kinh não bộ của con người, sắp xếp nhiều Nơ-ron (Nodes / ノード) theo từng lớp để xử lý thông tin.

▶ Học sâu (Deep Learning, DL)

・Chỉ những cấu trúc đặc biệt sâu (nhiều lớp) trong Mạng nơ-ron.

・Nhờ có nhiều lớp, nó có thể tự động học các đặc trưng và mô hình phức tạp hơn, từ đó phát huy hiệu suất cao trong các lĩnh vực như nhận dạng hình ảnh hay nhận dạng giọng nói.

2. Cơ sở của Học sâu… Phép toán của Mạng nơ-ron

● Cơ chế mô hình hóa não bộ con người

Hình 2 cho thấy một Mạng nơ-ron đơn giản. Các hình tròn tượng trưng cho những gì được gọi là Perceptron (パーセプトロン), mô phỏng các nơ-ron trong não người. Mỗi Perceptron sẽ có các Trọng số (Weights / 重み) $w_0, w_1, \cdots$ và Độ lệch (Bias / バイアス) $b$ tương ứng với số lượng đầu vào, và thực hiện phép tính sau đối với các tín hiệu đầu vào $x_0, x_1, \cdots$.

$$y = w_0 \times x_0 + w_1 \times x_1 + \cdots + b$$

Trong Mạng nơ-ron, bằng cách điều chỉnh trọng số và độ lệch của mỗi Perceptron, ta có thể thu được đầu ra phù hợp với dữ liệu đầu vào. Quá trình điều chỉnh này được gọi là Huấn luyện (Training / 学習).

Hình 2: Ví dụ về một Mạng nơ-ron đơn giản

(Nhiều Nơ-ron (Nodes) được bố trí thành nhiều lớp. Đầu vào → Lớp 1 → Lớp 2 → Lớp 3 → Lớp 4 → Lớp 5 → Đầu ra)

● Mạng nơ-ron và phép toán ma trận

Hình 3 là một phần của Mạng nơ-ron được trích ra từ Lớp thứ 3 của Hình 2. Dựa theo công thức tính toán của Perceptron đã nêu ở trên, các phép tính sau sẽ được thực hiện:

$$y_0 = w_{00} \times x_0 + w_{01} \times x_1 + b_0$$
$$y_1 = w_{10} \times x_0 + w_{11} \times x_1 + b_1$$
$$y_2 = w_{20} \times x_0 + w_{21} \times x_1 + b_2$$

Phép tính này có thể được thay thế bằng Phép toán nhân ma trận (Matrix Multiply-Accumulate / 行列積和演算).

$$Y = W \times X + B$$
$$Y = \begin{bmatrix} y_0 \\ y_1 \\ y_2 \end{bmatrix} \quad W = \begin{bmatrix} w_{00} & w_{01} \\ w_{10} & w_{11} \\ w_{20} & w_{21} \end{bmatrix} \quad X = \begin{bmatrix} x_0 \\ x_1 \end{bmatrix} \quad B = \begin{bmatrix} b_0 \\ b_1 \\ b_2 \end{bmatrix}$$

Như vậy, có thể nói rằng phép tính ở mỗi lớp của Mạng nơ-ron chính là phép toán nhân ma trận. Trong toàn bộ hệ thống Mạng nơ-ron, các phép toán nhân ma trận này sẽ được lặp đi lặp lại.

Hình 3: Một phần của Mạng nơ-ron trích xuất từ Lớp 3 của Hình 2

3. Mối quan hệ giữa Học sâu và Phần cứng

Trong số các Mạng nơ-ron, những mạng có cấu trúc đặc biệt sâu (nhiều lớp) được gọi là Học sâu. Trong tiếng Nhật, đây là thuật ngữ chung cho các phương pháp học máy được gọi là “深層学習” (Deep Learning).

Nghiên cứu đã được tiến hành từ những năm 1950, nhưng kể từ những năm 2010, nhờ sự nâng cao hiệu suất của phần cứng và những tiến bộ vượt bậc trong nghiên cứu liên quan đến Học sâu, hiệu suất đã được cải thiện đáng kể.

Khoảng năm 2010, Mô hình (Model / モデル) được gọi là CNN (Convolutional Neural Network) đã thu hút được sự chú ý và Học sâu ngày càng được sử dụng nhiều trong lĩnh vực nhận dạng hình ảnh. Từ năm 2017 trở đi, LLM (Large Language Model) dựa trên mô hình Transformer – tiêu biểu là ChatGPT – đã xuất hiện và trở thành chủ đề nóng vì có khả năng giao tiếp tự nhiên y như con người.

Luồng phát triển cho đến khi thực sự đưa Học sâu vào sử dụng được thể hiện trong Hình 4. Dưới đây, chúng tôi sẽ giải thích về quá trình huấn luyện và suy luận (Inference / 推論) trong Học sâu.

Chuyên đề Lập trình GPU & NPU

Hình 4: Luồng phát triển trước khi bắt đầu sử dụng Học sâu trong thực tế

[Bắt đầu]

↓

Định nghĩa vấn đề・Thiết lập mục tiêu

・Có những vấn đề gì, và muốn giải quyết như thế nào?

・Nếu điều này không rõ ràng thì rất dễ lạc lối.

↓

Học sâu có phải là tối ưu nhất?

・Sử dụng Học sâu là phương tiện chứ không phải mục đích.

・Nếu có phương pháp đơn giản hơn, nên áp dụng phương pháp đó.

(Không) -> Áp dụng phương pháp khác ngoài Học sâu

(Có)

↓

Thu thập Dữ liệu

・Thu thập dữ liệu dùng để huấn luyện và đánh giá Học sâu.

・Bước quan trọng quyết định đến hiệu suất.

・Lý tưởng nhất là chuẩn bị một lượng dữ liệu khổng lồ, bao quát đa dạng các trường hợp.

↓

Lựa chọn mô hình, Tinh chỉnh (Tuning)

・Lựa chọn mô hình Học sâu

・CNN, Transformer…

・Nếu cần thiết thì can thiệp vào mô hình và tinh chỉnh lại.

↓

Huấn luyện (Training)

・Thực hiện huấn luyện Học sâu

(Đòi hỏi tài nguyên tính toán khổng lồ nên GPU là chủ đạo)

↓

Suy luận・Đánh giá (Inference・Evaluation)

・Thực hiện suy luận bằng mô hình đã được huấn luyện và đánh giá hiệu suất của nó.

・Nếu kết quả đánh giá không tốt thì quay lại bước trước đó.

(Phần cứng chuyên dụng (NPU) đang lần lượt xuất hiện)

↓

Kết quả đánh giá: NG (Quay lại bước thích hợp) / Kết quả đánh giá: OK

↓

[Kết thúc]

● Huấn luyện… Đòi hỏi tài nguyên tính toán khổng lồ nên GPU là chủ đạo

▶ Tối ưu hóa các tham số (Parameters / パラメータ) của mô hình dựa trên lượng dữ liệu khổng lồ

Để giải quyết một vấn đề nào đó bằng cách sử dụng Học sâu, cần phải tiến hành quá trình huấn luyện. Huấn luyện trong Học sâu là quá trình tối ưu hóa các tham số (trọng số và độ lệch / weights và bias) của mô hình dựa trên lượng dữ liệu khổng lồ, giúp nó có thể thực hiện một tác vụ cụ thể.

Đặc tính của Học sâu thay đổi rất nhiều thông qua quá trình huấn luyện. Ví dụ: nếu bạn cho máy học hình ảnh xe hơi và tên loại xe, nó sẽ có thể nhận diện ngay lập tức loại xe đang chạy trên đường phố. Huấn luyện là một công đoạn vô cùng quan trọng quyết định đặc tính và hiệu suất của Học sâu, và có rất nhiều phương pháp cũng như kỹ thuật khác nhau tồn tại.

Việc hệ thống có thể nhận diện chính xác ngay cả khi góc máy ảnh thay đổi, hoặc không nhận diện sai các loại xe không có trong tập dữ liệu huấn luyện, phụ thuộc rất nhiều vào việc dữ liệu huấn luyện có chất lượng tốt hay không. Bài viết lần này sẽ không đi sâu vào vấn đề này, nhưng nếu tìm hiểu, bạn sẽ thấy một thế giới vô cùng sâu sắc đang mở ra.

▶ Phần cứng sử dụng

Phần cứng được sử dụng chủ yếu trong quá trình huấn luyện là GPU (Graphics Processing Unit). GPU ban đầu là phần cứng chuyên dụng cho các phép toán để hiển thị màn hình PC, nhưng vì nó có thể thực thi quá trình huấn luyện Học sâu một cách hiệu quả nên đã được sử dụng rộng rãi. Hiện nay, do thị trường Học sâu đã trở nên rất lớn, phía GPU cũng đang tiến hành bổ sung chức năng và tối ưu hóa dành riêng cho Học sâu.

▶ Framework (フレームワーク)

Hiện có những Framework giúp tối ưu hóa quá trình huấn luyện. Vào thập niên 2010 đã có rất nhiều loại khác nhau, nhưng hiện tại PyTorch và TensorFlow đang trở thành 2 thế lực mạnh nhất.

● Suy luận… Phần cứng chuyên dụng cũng lần lượt ra mắt

▶ Hình ảnh xuất thông tin từ bộ não

Suy luận, nếu ví với con người, thì đó là hành vi xuất (Output) thông tin từ bộ não. Trong ví dụ về chiếc xe hơi, nó tương đương với việc “nhận diện tức thì loại xe của chiếc xe đang chạy trên đường”.

▶ Phần cứng sử dụng

Phần cứng sử dụng trong suy luận, ngoài GPU, còn có NPU (Neural Processing Unit) là một ứng cử viên. NPU là phần cứng chuyên dụng chủ yếu cho việc suy luận. Nó tăng tốc độ xử lý dành cho Học sâu hơn cả GPU, đồng thời cắt giảm các chức năng không cần thiết khác.

Hiện tại, NPU đang trong tình trạng “quần hùng cát cứ” (Hình 5), với các sản phẩm từ nhiều kiến trúc khác nhau được ra mắt bởi các công ty. Nhìn chung, điểm mạnh của chúng là hiệu quả sử dụng điện năng vượt trội so với GPU.

Hình 5: Các thiết bị AI từ nhiều công nghệ khác nhau của các công ty đang tạo ra cục diện cạnh tranh khốc liệt.

4. Người hùng trong việc phổ biến Học sâu… Mạng nơ-ron tích chập

● Học sâu và những vấn đề đang bộc lộ

Từ “Sâu” (Deep) trong Học sâu bao hàm 2 ý nghĩa: số lượng lớp nhiều và số lượng nơ-ron ở mỗi lớp cũng nhiều. Cả hai điều này có nghĩa là khi số lượng Perceptron tăng lên, khả năng biểu diễn của toàn bộ Mạng nơ-ron sẽ trở nên phong phú hơn.

Vậy, có phải cứ tăng số lượng Perceptron bao nhiêu thì khả năng biểu đạt của Mạng nơ-ron sẽ tăng lên bấy nhiêu không? Thực tế, khi số lượng Perceptron tăng lên, các vấn đề sau đây sẽ lộ rõ.

・Khi huấn luyện: Xảy ra vấn đề gọi là Triệt tiêu đạo hàm (Vanishing Gradient / 勾配消失), quá trình huấn luyện diễn ra không hiệu quả, sự cải thiện khả năng biểu đạt bị chững lại.

・Khi suy luận: Khi số lượng Perceptron tăng, khối lượng tính toán (Computational Complexity / 計算量) cũng tăng lên, dẫn đến thời gian cần thiết cho suy luận tăng lên.

● Sự xuất hiện của Mạng nơ-ron tích chập

Đầu những năm 2010, các nghiên cứu nhằm giải quyết vấn đề này diễn ra sôi nổi, và những thành quả đó đã dẫn đến sự phát triển nhanh chóng của Học sâu. Một trong những thành quả đó là Mạng nơ-ron tích chập.

Mạng nơ-ron tích chập (Convolutional Neural Network/ 畳み込みニューラル・ネットワーク, gọi tắt là CNN) là một loại của Học sâu, nhưng có cấu trúc khác với Hình 2 và Hình 3. Cấu trúc của CNN được thể hiện ở Hình 6. CNN giả định rằng đầu vào là một hình ảnh từ 2 chiều trở lên. Điều này liên quan đến Lớp tích chập và Lớp Pooling sẽ được mô tả ở phần sau.

Hình 6 (1): Cấu trúc của Mạng nơ-ron tích chập (CNN)

Đầu vào → Lớp tích chập (Trích xuất đặc trưng) → Lớp Pooling → Lớp liên kết đầy đủ (Phân loại) → Đầu ra

● Lớp tích chập (Convolution Layer/ 畳み込み層)

Lớp tích chập là lớp thực hiện phép toán tích chập. Trong ví dụ ở Hình 7, phép toán tích chập được thực hiện bằng cách sử dụng bộ lọc (Filter) kích thước 3×3. Bằng cách áp dụng bộ lọc 3×3 lên hình ảnh đầu vào kích thước 5×5, ta sẽ thu được hình ảnh đầu ra kích thước 3×3.

Hình 7 (2): Nội dung xử lý tính toán của Lớp tích chập

Hình ảnh mô tả việc áp dụng bộ lọc 3×3 lên hình ảnh đầu vào 5×5 và xuất ra hình ảnh đầu ra 3×3.

Việc đưa Lớp tích chập vào Học sâu mang lại những lợi ích sau:

▶ Có thể xử lý trong khi vẫn duy trì thông tin vị trí

Khi chú ý đến vị trí của đầu vào và đầu ra, có thể thấy thông tin vị trí được bảo toàn: đầu ra cho đầu vào ở phía trên bên trái sẽ nằm ở phía trên bên trái, đầu ra cho đầu vào ở phía dưới bên phải sẽ nằm ở phía dưới bên phải… Điều này cực kỳ hữu ích trong các hệ thống nhận dạng hình ảnh.

▶ Có thể giảm khối lượng tính toán và số lượng tham số

Bằng cách sử dụng Lớp tích chập, có thể giảm thiểu khối lượng tính toán và số lượng tham số. Hãy thử so sánh khối lượng tính toán và số lượng tham số cần thiết giữa cấu trúc như trong Hình 2, Hình 3 (gọi là Lớp liên kết đầy đủ) và trường hợp kích thước đầu vào là 5×5, đầu ra là 3×3.

・Khối lượng tính toán

Lớp tích chập : $(3 \times 3) \times (3 \times 3) \times 2 = 162$

Lớp liên kết đầy đủ : $(5 \times 5) \times (3 \times 3) \times 2 = 450$

・Số lượng tham số

Lớp tích chập : $3 \times 3 + 1 = 10$

Lớp liên kết đầy đủ : $(5 \times 5 + 1) \times (3 \times 3) = 234$

Như vậy, sự khác biệt lớn đã được tạo ra. Sự chênh lệch giữa kích thước đầu vào và kích thước bộ lọc càng lớn thì sự khác biệt về khối lượng tính toán và số lượng tham số càng trở nên rõ rệt.

● Lớp Pooling (Pooling Layer)

Hình 8 minh họa Lớp Pooling, trong đó giá trị lớn nhất của vùng đầu vào kích thước 2×2 được xuất ra. Xử lý này được gọi là Max Pooling.

Hình 8 (3): Nội dung xử lý tính toán của Lớp Pooling

Thu được một giá trị lớn nhất làm đầu ra đối với vùng đầu vào 2×2.

Bên trái: Lát cắt độ sâu đơn (Single-depth slice) → Max Pooling với Bộ lọc 2×2 và Sải bước (Stride) 2

Trong Lớp Pooling, một phép xử lý nào đó sẽ được thực hiện trên một vùng đầu vào nhất định để tạo ra 1 đầu ra. Pooling mang ý nghĩa là “thu gom/tóm gọn”, thể hiện việc đầu ra được tóm gọn lại so với đầu vào.

Lớp Pooling thường được đặt ngay sau Lớp tích chập. Bằng cách giảm kích thước đầu ra trong khi vẫn duy trì thông tin vị trí, nó mang lại hiệu quả giảm khối lượng tính toán cho các quá trình xử lý tiếp theo.

5. Hệ thống phát triển hơn nữa… Sự xuất hiện của mô hình Transformer

● Phổ biến rộng rãi trong Xử lý ngôn ngữ tự nhiên và Chatbot

Cấu trúc của Học sâu được gọi là mô hình. Cho đến nay, nhiều mô hình khác nhau đã được đề xuất. Trong số đó, mô hình đang thu hút sự chú ý trong những năm gần đây là Transformer.

Transformer là một mô hình đã trở nên phổ biến trong lĩnh vực Xử lý ngôn ngữ tự nhiên (NLP: Natural Language Processing). Ban đầu, đúng như tên gọi, nó được phát triển với mục đích làm máy dịch thuật giữa các ngôn ngữ. Sau đó, nhờ hiệu suất tạo văn bản cao, khả năng xử lý song song để vận hành ở tốc độ cao, và có thể hành xử theo cách trả lời câu hỏi nếu được huấn luyện thích hợp, nó đã được ứng dụng trong các Chatbot tiêu biểu như ChatGPT.

● Cần phần cứng có hiệu suất cao hơn

Cấu trúc của Transformer được thể hiện ở Hình 9. Trong đó, Multi-Head Attention (マルチヘッド・アテンション) có thể nói là phần đặc trưng nhất của Transformer. Nhờ cơ chế này, hệ thống có thể nắm bắt hiệu quả bối cảnh (Context) của các câu dài, đồng thời có thể hoạt động ở tốc độ cao thông qua xử lý song song.

Gần đây, Transformer cũng đang được ứng dụng trong lĩnh vực xử lý hình ảnh và bắt đầu thể hiện hiệu suất cao hơn so với CNN. Tuy nhiên, do khối lượng tính toán và số lượng tham số nhiều hơn CNN, nó cần được thực thi trên phần cứng có hiệu suất cao.

Hình 9 (4): Kiến trúc mô hình Transformer

Bên trái, từ dưới lên: Đầu vào (Chuỗi ký tự của từ) → Input Embedding → Positional Encoding → Lớp Encoder (N×)

Bên phải, từ dưới lên: Đầu ra từ vị trí 1 đến trước đó → Output Embedding → Positional Encoding → Lớp Decoder (N×) → Biến đổi tuyến tính (Linear) → Softmax function → Xác suất đầu ra

N × Lớp Encoder

Multi-Head Attention → Kết nối phần dư & Chuẩn hóa lớp (Residual & Layer Norm) → Feed Forward → Kết nối phần dư & Chuẩn hóa lớp

Lớp Decoder × N

Masked Multi-Head Attention → Kết nối phần dư & Chuẩn hóa lớp → Multi-Head Attention → Kết nối phần dư & Chuẩn hóa lớp → Feed Forward → Kết nối phần dư & Chuẩn hóa lớp

◆ Tài liệu tham khảo/trích dẫn ◆

(1) Sai Balaji : Binary Image classifier CNN using TensorFlow, Techiepedia, Medium,

https://medium.com/techiepedia/binary-image-classifier-cnn-using-tensorflow-a3f5d6746697

(2) 畳み込みニューラル・ネットワークとは, IBM,

https://www.ibm.com/jp-ja/think/topics/convolutional-neural-networks

(3) CS231n Convolutional Neural Networks for Visual Recognition, GitHub,

https://cs231n.github.io/convolutional-networks/

(4) Vaswani, A. et al : Attention Is All You Need,

https://arxiv.org/abs/1706.03762

(5) 佐藤 聖 : 深層学習の最新アーキテクチャ Transformer, Interface, 2023年4月号, CQ出版社.

Leave a Comment

Chia sẻ:

Chương 1: Lựa chọn Bộ xử lý (Processor/ プロセッサ) trong kỷ nguyên AI – Các phép toán Deep Learning và Phần cứng (Hardware)

Or copy link

CONTENTS