Nhân xử lý AI hay Neural Engine là gì, sao không dùng CPU, GPU cho tiện?

Duy Luân
16/11/2020 22:1Phản hồi: 56
Nhân xử lý AI hay Neural Engine là gì, sao không dùng CPU, GPU cho tiện?
cover_home_neural_engine_ai_la_gi.jpg

Neural Engine là tên gọi của nhân xử lý trí tuệ nhân tạo trên các con chip của Apple. Trên chip của Samsung, Huawei thì họ gọi là Neural Processing Unit, Qualcomm thì đặt tên là Qualcomm AI Engine và nhân xử lý Hexagon… Ngày nay, nhân xử lý AI xuất hiện rất phổ biến trên nhiều chip di động và sắp tới là cả chip máy tính nữa để tối ưu cho các tác vụ trí tuệ nhân tạo như nhận diện gương mặt, nhận diện chữ viết, phân loại hình ảnh, tách chủ thể ra khỏi nền... Vì sao chúng ta lại cần chúng, chúng giúp gì được cho việc sử dụng thường ngày?

Neural Network hoạt động như thế nào?


Trước khi chúng ta đi vào các thứ rất là máy móc, hãy xem thử xem những tác vụ liên quan tới AI thì cần những phép tính như thế nào. AI là một lĩnh vực khá rộng, trong bài này chúng ta sẽ tập trung vào mảng machine learning và cụ thể là giải pháp sử dụng các mạng nơ-ron nhân tạo (neural network).

AI_nhan_dien_chu.jpg

Lấy ví dụ về một tác vụ cần nhận diện chữ viết tay và chuyển nó thành văn bản. Trong quá trình này, có một đoạn bạn sẽ phải “đọc” hình ảnh. Giả sử mỗi hình ảnh của kí tự là một tấm hình 28 x 28 pixel chỉ có 2 màu đen trắng, thì như vậy nó sẽ được chuyển thể thành một vector với 784 chiều (28 x 28 = 784). Trong ảnh động bên dưới, để dễ nhìn thì chúng ta chỉ xem tấm ảnh là 3 x 3 = 9 chiều mà thôi.

Mạng nơ-ron được sử dụng trong bài toán này sẽ lấy các giá trị của vector nhiều chiều này và làm phép nhân với các tham số (parameter, có thể hiểu là những đặc trưng của dữ liệu để biểu thị cho sự khác nhau giữa số 8 với số 7, số 6, số 5). Sau khi nhân xong thì kết quả sẽ được cộng lại để tính toán ra kết quả trong cột “output” như ở hình dưới.

tham_so.gif

Nhìn vào ảnh động này, bạn có thể thấy rằng hình ảnh của số 8 được đưa vào một thuật toán nhận diện, nó sẽ được so sánh với các ảnh mẫu của số 7, số 8, số 9 (và nhiều số khác nữa) bằng phép nhân và phép cộng vector. Kết quả cuối cùng cho thấy ảnh chụp khớp với ảnh mẫu của số 8 nhất, nên máy dự đoán tấm ảnh này chính là số 8.

Các tác vụ AI có liên quan đến xử lý ảnh, xử lý âm thanh, xử lý ngôn ngữ tự nhiên… thường sẽ cần thực hiện rất nhiều phép cộng và phép nhân như thế này. Người ta thường tổ chức nó thành những phép nhân ma trận (tích ma trận), có thể bạn đã nghe tới nó khi học giải tích trong các môn toán đại cương rồi đấy.

tich_ma_tran.jpg

Tóm lại, vấn đề cần giải quyết với máy tính đó là phải làm sao thực hiện các phép nhân ma trận rất lớn trong thời gian ngắn nhất có thể mà phải tiêu thụ ít điện (chứ không thôi máy hết pin, hoặc server thì phải trả nhiều tiền điện).

CPU hoạt động như thế nào?


CPU là một bộ xử lý có thể dùng cho nhiều tác vụ khác nhau, nó được tổ chức trong một sơ đồ như bên dưới (gọi là sơ đồ von Neumann, anh em học IT chắc đã từng nghe qua):

Quảng cáo



4.1-Von-Neumann-and-Harvard-architectures.png

Lợi ích của CPU đó là nó đem lại tính linh hoạt rất cao. Nhờ kiến trúc Von Neumann, bạn có thể chạy gần như mọi loại ứng dụng, mọi loại phần mềm, phép tính trên một con CPU truyền thống. Bạn có thể dùng CPU để xử lý văn bản, để kiểm soát động cơ phản lực, để thực hiện giao dịch ngân hàng, hay thậm chí là dùng neural network chạy trên CPU để phân loại hình ảnh luôn cũng được.

Nhưng cũng vì CPU linh hoạt quá nên phần cứng của nó không biết chính xác nó cần làm gì ở bước tiếp theo. Nó phải đọc dữ liệu lệnh (instruction) từ phần mềm. Ngoài ra, CPU sẽ lưu kết quả tính toán của mình bên trong những bộ nhớ nhỏ nằm trong CPU (register hoặc cache) với từng phép tính một. Khi có một lượng lớn phép tính cần thực hiện trong thời gian ngắn, CPU sẽ gặp tình trạng “nghẽn cổ chai” (von Neumann Bottleneck) khi register không đủ lưu trữ thì nó phải lưu dữ liệu xuống cache, cache không đủ thì phải lưu tiếp xuống RAM, khiến quá trình truy xuất dữ liệu chậm đi.

von-neumann.jpg

Chưa hết, dù ngày nay các phép tính neural network vẫn có thể dự đoán được những buớc tiếp theo cần tính toán nhưng mỗi nhân số học (Arithmetic Logic Unit - ALU, là đơn vị kiểm soát phép tính nhân và cộng) nằm trong CPU sẽ thực hiện các phép tính này từng cái một theo tuần tự. Mà cứ xong một phép tính là lại phải truy cập bộ nhớ, khiến quá trình xử lý các neural network trở nên lâu hơn và tốn nhiều năng lượng hơn.

GPU hoạt động như thế nào?

Quảng cáo


Để thực hiện được nhiều phép tính hơn trong cùng một đơn vị thời gian, người ta sử dụng bộ xử lý đồ họa (GPU). GPU sử dụng một chiến thuật rất đơn giản: tăng số ALU lên thật nhiều. Một GPU hiện đại có thể có tới 2000 - 2500 ALU trong mỗi nhân xử lý, như vậy bạn có thể thực hiện hàng nghìn phép nhân và phép cộng cùng lúc.

fpga-gpu-and-alu-8-638.jpg

Kiến trúc như thế này giúp GPU trở thành lựa chọn phù hợp trong những ứng dụng cần phải tính toán song song rất nhiều, ví dụ như phép nhân ma trận trong neural network. Đây cũng là lý do vì sao những người làm về AI thường đi tìm máy tính, server có GPU rời để họ có thể làm việc nhanh hơn. GPU cũng là thứ được dùng nhiều nhất cho việc xử lý machine learning tính đến thời điểm viết bài này.

Tuy nhiên, GPU thực chất vẫn là một bộ xử lý đa dụng, nó phải hỗ trợ cho rất nhiều kiểu phần mềm khác nhau và cũng sẽ xuất hiện vấn đề nghẽn cổ chai. Với mỗi phép tính của cả nghìn ALU, GPU vẫn cần phải truy cập bộ nhớ để đọc dữ liệu đầu vào và lưu trữ kết quả sau khi tính toán. Và bởi vì có cả nghìn ALU nên việc này trở nên hao điện hơn.

Các bộ xử lý trí tuệ nhân tạo hoạt động như thế nào?


Bộ xử lý AI được sinh ra chỉ để làm những thứ về AI. Nó không dùng để dựng hình ảnh, để đổ bóng, để vẽ hình học như GPU, nó không thể xử lý văn bản hay điều khiển tên lửa như CPU. Nó chỉ làm mỗi một thứ mà thôi, thế nên người ta thiết kế để chúng có thể chạy tốt các tác vụ về nhân ma trận ngay từ đầu, với tốc độ rất nhanh, tiêu thị ít năng lượng, và lại còn có kích thước nhỏ nữa.

Cái quan trọng đó là những nhân xử lý AI như Apple Neural Engine, Qualcomm AI Engine hay Samsung Nerual Processing Unit (NPU) giảm được đáng kể tình trạng nghẽn cổ chai von Neumann Bottleneck. Vì các con chip này được thiết kế để tính toán ma trận nên phần cứng của chip biết chính xác mọi phép toán cần thiết. Nó có thể thực hiện hàng nghìn phép nhân và phép cộng, rồi kết nối chúng trực tiếp với nhau ngay từ phần cứng. Kiến trúc này gọi là systolic array. Nhìn hình bên dưới, đây là cách tổ chức khi cần nhân 2 ma trận với nhau đấy.

tich_ma_tran.gif

Quá trình tính toán của các bộ xử lý AI khi đó sẽ diễn ra như sau: chúng sẽ lấy dữ liệu tham chiều từ RAM, chuyển vào trong một ma trận ALU để nhân và cộng. Sau đó, chip tiếp tục lấy dữ liệu để dự đoán từ bộ nhớ. Với mỗi phép nhân ma trận được thực hiện, kết quả sẽ được chuyển cho phép nhân tiếp theo song song với việc bắt đầu cộng kết quả lại. Kết quả của quá trình này là tổng của tất cả những phép nhân giữa dữ liệu cần dự đoán với dữ liệu tham chiếu.

Cả quá trình nói trên được thực hiện rất nhanh mà không cần lưu dữ liệu lên bộ nhớ trong mỗi lần tính toán, khi nào xong rồi mới ghi kết quả mà thôi. Như vậy tốc độ tăng lên đáng kể trong khi giảm được mức độ tiêu thụ năng lượng.

Apple không giải thích chi tiết về kiến trúc ma trận của Neural Engine, nên thôi lấy ví dụ về con chip AI của Google tên là TPU đi. Mỗi con Cloud TPU thế hệ thứ 2 của Google sử dụng 2 systolic array với kích thước 128 x 128, như vậy có tất cả 32.768 nhân ALU để thực hiện phép tính.

Tóm lại nhân AI giúp gì cho việc sử dụng thường ngày của chúng ta?


Hiện nay rất nhiều tính năng của điện thoại, hay của các app, đều cần đến AI hay cụ thể là phép nhân ma trận. Ví dụ:
  • Tính năng nhận diện gương mặt Face ID trên iPhone
  • Chức năng phân loại gương mặt trên app gallery của điện thoại Android
  • Chức năng nhận diện cảnh chụp để điều chỉnh thông số ảnh cho đẹp hơn
  • Tách chủ thể ra khỏi nền để xóa phông mạnh hơn
  • Tự động phân tích từng pixel để tăng độ sáng, tăng độ tương phản, hoặc tăng độ nét (như Deep Fusion)
  • Tự động áp dụng Smart HDR cho các cảnh ngoài trời, ảnh phong cảnh
  • ….

Tất cả đều dùng đến mạng nơ-ron nhân tạo, đặc biệt là các chức năng về camera trên những con điện thoại hiện đại.

Face_ID.jpg

Thế nên các nhà sản xuất chip mới tích hợp nhân AI lên bộ xử lý của các điện thoại là vậy. Hiện nay một số con CPU Intel mới cũng có nhân AI dành cho máy tính, hay chip Apple M1 cũng tích hợp Nerual Engine để dùng trên MacBook, Mac Mini…

Với sự xuất hiện của nhân AI riêng, các tính năng nói trên sẽ chạy nhanh hơn, tốn ít điện hơn (tức thời gian dùng pin lâu hơn), tỏa nhiệt ít hơn.

Để hỗ trợ cho những ứng dụng bên thứ 3 cũng có thể khai thác được nhân AI triệt để, Apple cung cấp bộ khung lập trình CoreML cho app iOS, còn Android thì ML Kit vào một số giải pháp khác. Khi được lập trình bằng những công cụ nói trên, hệ điều hành sẽ biết và chuyển sang dùng nhân AI khi cần.

apple-a14-bionic-chip-neural-engine-1200x675.jpg

Không phải lúc nào nhân AI cũng được sử dụng


Nhân AI dùng cho việc tính toán AI là đúng rồi, nhưng cả khi các ứng dụng thực hiện những tác vụ AI thì máy vẫn có thể chuyển đổi giữa việc dùng CPU, GPU hoặc nhân AI tùy tác vụ.

Ví dụ, với Neural Engine của Apple, có những tác vụ sử dụng mạng nơ-ron dạng RNN sẽ không được xử lý bằng Neural Engine mà chuyển sang dùng GPU. Có vẻ như Apple chưa lập trình để Neural Engine biết cách xử lý RNN như thế nào. Việc này lập trình viên không thể kiểm soát, iOS sẽ kiểm soát và bạn không có cách nào “ép” sử dụng Neural Engine cả, trừ việc bạn khai báo trong app của mình rằng bạn “ưu tiên” dùng Neural Engine khi có thể. Bạn có thể xem thêm ở link github này.

Với Android thì mình không tìm được nhiều tài liệu để nói về vụ này, nên anh em nào biết thì chia sẻ thêm nhé.

Xong, hi vọng anh em có thêm nhiều kiến thức hữu ích trong thế giới công nghệ, và biết được cái điện thoại, cái máy tính của mình nó chạy như thế nào.
56 bình luận
Chia sẻ

Xu hướng

Vậy mới thấy Apple bá đạo thế nào với chip A rồi M, đúng là Đại đế.

In Apple We Trust!
@aws đọc bài thấy bá đạo chỗ nào?? đâu phải mỗi chỉ Apple làm được =))
mphp.iamt
ĐẠI BÀNG
3 năm
@aws Apple vạn tuế =))
catbui01
TÍCH CỰC
3 năm
@vanlinh2905 Apple bá đạo chỗ là văn võ song toàn, song kiếm hợp bích đó bác
conco119
TÍCH CỰC
3 năm
@aws Apple kết hợp phần cứng với phần mềm rất tốt, do họ kiểm soát mọi thứ nên sản phẩm cuối rất chất lượng. Còn các hãng khác thì chỉ chuyên làm một thứ nên nó không tối ưu ngon như thằng Apple.
@aws Apple vạn tuế 🤣🤣🤣
bữa giờ nghe các cháu khoe khắp nơi là M1 có 16 core ML cực kì bá đạo =))
nhưng nhìn lại thì thằng nào cũng có =))) cười vl
@laiviet Intel ice lake đã có hỗ trợ deep learning boost rồi, tích hợp sẵn trong phần cứng luôn
jimmykudo
ĐẠI BÀNG
3 năm
@vanlinh2905 Nó bá là bá trong tác vụ của chính nó đó ông. Ko bá thì ko khoe làm gì, mà thực ra gọi là khoe thì cũng chẳng có khoe. Chỉ là nêu ra để biết đc là con M1 nó có gì và ML nó sẽ hoạt động, bổ trợ mạnh mẽ như nào trong công việc các thứ.
@vanlinh2905 Thấy chú tính tình có vẻ ganh ăn tức ở nhỉ. Người ta nói một cái gì đó bá đạo là người ra đã công nhận nó mạnh mẽ rồi, dù quảng cáo hay thực tế thì ít ra nó cũng đã chứng tỏ đc khả năng của nó rồi chứ có phải nói mồm k đâu.
Chú có phản biện người khác cũng phải chịu khó đi tìm dẫn chứng hợp lý mà nêu ra chứ cứ phải gào thét xong lăn ra cười sặc sụa như mấy cái emo chú cào là đc đâu, ng ta khinh thêm..

Còn chú "nhìn lại" core ML thằng nào cũng có, uh, nhưng là có ntn, mấy core đó có được build và phát triển nghiêm túc, có đủ mạnh như core ML của M1 ko? hay chỉ sản xuất đưa vào nữa vời để áp dụng cho một tính năng cụ thể nào đó cho có mang tính quảng bá. Nếu chú có biết thì mong chú nên đưa vài dẫn chứng cho t và người khác học hỏi.
À nhắc thêm chú là M1 đang chạy trên nền tảng máy tính đấy chứ k phải điện thoại đâu.

Tại sao M1 lại có đến 16 core ML, trong khi chỉ có 4+4 core CPU hay 7-8 core GPU
Core ML nó có tác dụng ntn thì trong bài viết cũng đã ghi rõ. ML chuyên tính toán các ma trận, nhưng đâu phải đơn giản v, nếu k có core ML thì nói sơ sơ những phép tính này nếu để CPU/GPU tính toán thì cái gọi là "tối ưu" nó ở đâu trong con M1 này? hay tính chưa xong lại tràn cache, hết ram thì những task khác tính sao?

Chưa kể core ML còn có khả năng "học" trong hệ thống của nó. Nó "Học" được thì nó sẽ thông minh hơn. Thông minh hơn để làm gì nhỉ, à chắc cái này chú đang thắc mắc "chíp mà cần đek gì thông minh".
T từng nói là "core ML bá đạo chứ không chỉ riêng CPU hay GPU ko"! chú đọc có nhăn não k? có hiểu đc ý ng khác nói k hay chỉ chờ chực nhảy bổ vào và "phặp"..

Mới đọc bài viết gì người tỏ ra thông mình là người ntn ấy nhỉ...
Chú đọc hết bài này chưa? chú đọc rồi chú có dùng não của người để suy nghĩ k? hay não chú có giới hạn vật lý nào đó mà chú chỉ biết gào thét bên cạnh cái cái emo vô duyên mà theo chú như v là phản biện.

//T k cuồng gì Apple, nhưng thực tế cũng đã chỉ rõ, ai mới có khả năng thay đổi cả một nền công nghệ!
đọc xong bài này các cháu đỡ thắc mắc là sao dân BK phải học đại cương nặng thế =))
chimanhvu
ĐẠI BÀNG
3 năm
@vanlinh2905 Ngày xưa chúa ghét ma trận. Thế mà giờ ma trận định hình thế giới.
Khoa SE
TÍCH CỰC
3 năm
@trantuananh1996 Bác làm về mảng gì mà dính đại cương nhiều thế?
@Khoa SE Trước mình code app thôi, thỉnh thoảng mới liên quan tí. Giờ đá qua chút AI, ML cái là bắt đầu thấy đầy đại số, xác xuất rồi 😁
Khoa SE
TÍCH CỰC
3 năm
@trantuananh1996 Chúc mừng bác nha :D em thì thua món này rồi
Ngày xưa mua PC chỉ cần hỏi Có Pentium 4 không? Có siêu phân luồng không? Bây giờ mua laptop chỉ cần hỏi Có trái Táo phát sáng ở mặt lưng không? Xong. Như vậy là đủ.
@from team b with love Mình thì chỉ hỏi có cái cửa sổ phát sáng ko là được 😆
056837FB-7A4E-44C8-B335-F4FE19A01934.jpeg
@from team b with love Thời Pentium 4 mới ra nó quả là cái tên mơ ước ^^ Về sau thì Core i thế chỗ nó.

Và giờ là Ryzen !
Mod viết theo cách dễ hiểu cho mọi người. Bài viết hay, ý nghĩa.
P/s: mod có thể ghi nguồn trích dẫn gốc vào bài ko? Em đang học trong lĩnh vực vi xử lý và hệ điều hành nên cần đọc bài chi tiết hơn chút 😁
@newtalented Để mình add vô thêm, quên mất, nó đây https://www.google.com.vn/amp/s/cloudblog.withgoogle.com/products/ai-machine-learning/what-makes-tpus-fine-tuned-for-deep-learning/amp/
Ngày xưa năm 1 học Pascal thì lại không có máy tính. Toàn viết chương trình chay trên vở. Đến năm 3 mua được máy tính FPT Elead chạy Pen4 viết được chương trình nhân 2 ma trận rồi in kết quả. Mừng hết lớn. 😂
bài của bác Duy Luân đúng chất lượng 😃, nhất mấy bài này đọc ko bỏ chữ
lieuzlieu
ĐẠI BÀNG
3 năm
thề là đọc ko hiểu gì luôn 😭😭😭
Hay
Lâu rồi mới thấy có bài viết giá trị như thế này.
............
Chia sẻ anh em loạt video về cách máy vi tính hoạt động. Mình thấy khá hay, đang chờ các clip tiếp theo.

Bài viết hay, dễ hiểu và thêm nhiều kiến thức.

5 sao cho Duy Luân !
True Man
ĐẠI BÀNG
3 năm
Cái đọc 2 lần mới hiểu đc, bảo sao dân công nghệ mấy trường FPT, Bách Khoa lại hay ca thán là học đau đầu 😅
Cám ơn mod vì một bài viết nhiều thông tin kỹ thuật đọc hiểu được thêm !
Basic như này mà có bác phải đọc 2 lần á? 😆
Bảo sao tinhte nhiều cừu
catbui01
TÍCH CỰC
3 năm
Apple bá đạo là phải rồi, họ vừa phát triển phần cứng vừa phát triển phần mềm.
Văn võ song toàn.
Song kiếm hợp bích.
Chỉ thích xài hàng Apple.... kkk
Tuyệt vời
Bài viết hay quá mà em ko hiểu gì cả 😅
up209d
TÍCH CỰC
3 năm
Cái nào ra cái đó thì nó mới nhanh được, cứ dồn hết một chỗ thì thành general purpose thì chắng cái nào vượt trội đc cả.

Xu hướng

Bài mới









  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2024 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: Số 70 Bà Huyện Thanh Quan, P. Võ Thị Sáu, Quận 3, TPHCM
  • Số điện thoại: 02822460095
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019