NumPy là thư viện Python miễn phí mã nguồn mở để xử lý các mảng đa chiều (n-dimension array), hay còn được gọi là các tensors, và các tính toán số học.
NumPy là gì
NumPy là một thư viện mã nguồn mở miễn phí mạnh mẽ, được tối ưu hóa tối đa, dành cho ngôn ngữ lập trình Python, bổ sung hỗ trợ cho các mảng quy mô lớn và đa chiều (còn gọi là ma trận hoặc tensor). NumPy cũng được trang bị một tập hợp các hàm toán học cấp cao để hoạt động cùng với các mảng này. Chúng bao gồm đại số tuyến tính cơ bản, mô phỏng ngẫu nhiên, phép biến đổi Fourier, phép toán lượng giác và phép toán thống kê.
NumPy là viết tắt của ‘numerical Python’ và được xây dựng dựa trên kết quả ban đầu của thư viện Numeric và Numarray với mục tiêu cung cấp khả năng tính toán số học nhanh chóng cho Python. Ngày nay NumPy có rất nhiều contributors và được NumFOCUS tài trợ.
Là thư viện cốt lõi cho tính toán khoa học, NumPy là cơ sở cho các thư viện như Pandas, Scikit-learn và SciPy. Nó được sử dụng rộng rãi để thực hiện các phép toán được tối ưu hóa trên các mảng lớn.
Tại sao lại là NumPy và nó hoạt động như thế nào
Mảng đa chiều là cấu trúc dữ liệu trung tâm của thư viện NumPy và thường biểu thị một lưới các giá trị. NumPy ndarray, một đối tượng mảng đa chiều đồng nhất, mô tả một tập hợp các phần tử hoặc các mục thuộc loại tương tự. Trong các mảng này, mỗi mục bao gồm khối bộ nhớ có cùng kích thước và mỗi khối được xác định theo cùng một cách. Điều này cho phép thao tác dữ liệu hiệu quả, nhanh chóng và dễ dàng cho tính toán khoa học.
Các hoạt động của mảng NumPy nhanh hơn Python Lists vì mảng NumPy là sự tổng hợp của các kiểu dữ liệu tương tự và được đóng gói dày đặc trong bộ nhớ. Ngược lại, Python Lists có thể có các loại dữ liệu khác nhau, đặt các ràng buộc bổ sung trên hệ thống trong khi thực hiện tính toán trên chúng.
Lợi ích của NumPy
Các lợi ích và đặc tính quan trọng của NumPy bao gồm:
- Các khái niệm điện toán ndarray của NumPy là cốt lõi của hệ sinh thái Python và khoa học PyData.
- NumPy cung cấp giao diện người dùng Python cho các hàm C được tối ưu hóa cao cho phép tạo ra giao diện Python đơn giản với tốc độ biên dịch mã.
- Đối tượng mảng đa chiều mạnh mẽ của NumPy tích hợp với nhiều thư viện khác nhau.
- Mảng NumPy có thể thực hiện các phép toán nâng cao với tập dữ liệu lớn hiệu quả hơn và sử dụng ít mã hơn so với khi sử dụng danh sách tích hợp sẵn của Python. Điều này rất quan trọng đối với trình tự tính toán khoa học, trong đó kích thước và tốc độ là rất quan trọng.
Tại sao NumPy lại quan trọng với người dùng
NumPy mang đến cho các nhà khoa học dữ liệu sự kết hợp giữa khả năng sử dụng Python và tối ưu hóa cấp độ C cần thiết để cho phép thực hiện nhanh chóng và hiệu quả để phân tích dữ liệu khám phá cũng như xây dựng mô hình. Sự kết hợp này là bắt buộc để tạo nhanh các thuật toán cần thiết thành công trong điện toán khoa học ngày nay. Điều này đã biến NumPy trở thành cách truyền đạt dữ liệu đa chiều trong Python trên thực tế.
Tăng tốc tính toán Python với GPU
Về mặt kiến trúc, CPU chỉ bao gồm một vài cores với nhiều bộ nhớ đệm có thể xử lý một số luồng phần mềm cùng một lúc. Ngược lại, GPU bao gồm hàng trăm cores có thể xử lý hàng nghìn threads cùng một lúc.
NumPy đã trở thành cách truyền đạt dữ liệu đa chiều trong Python trên thực tế. Tuy nhiên, việc triển khai nó không tối ưu cho GPU nhiều cores. Vì lý do này, các thư viện mới hơn được tối ưu hóa cho GPU sẽ triển khai hoặc tương tác với array Numpy.
NVIDIA CUDA là một nền tảng điện toán song song và mô hình lập trình được NVIDIA phát triển để tính toán chung trên GPU. Giao diện mảng CUDA là định dạng tiêu chuẩn mô tả mảng GPU (tensor) để cho phép chia sẻ mảng GPU giữa các thư viện khác nhau mà không cần sao chép hoặc chuyển đổi dữ liệu. Mảng CUDA được hỗ trợ bởi Numba, CuPy, MXNet và PyTorch.
- CuPy là thư viện triển khai array NumPy trên NVIDIA GPU bằng cách tận dụng thư viện GPU CUDA.
- Numba là trình biên dịch Python có thể biên dịch mã Python để thực thi trên GPU hỗ trợ CUDA. Array NumPy được hỗ trợ trực tiếp trong Numba.
- Apache MXNet là một thư viện linh hoạt và hiệu quả cho việc học sâu. NDArray của nó được sử dụng để biểu diễn và thao tác đầu vào và đầu ra của mô hình dưới dạng array đa chiều. NDArray tương tự như ndarray của NumPy, nhưng chúng có thể chạy trên GPU để tăng tốc tính toán.
- PyTorch là một deep learning framework mã nguồn mở nổi tiếng nhờ tính linh hoạt và dễ sử dụng. Pytorch Tensors tương tự như ndarrays của NumPy, ngoại trừ việc chúng có thể chạy trên GPU để tăng tốc tính toán.
Khoa học dữ liệu toàn diện, được tăng tốc bằng GPU của NVIDIA
Bộ thư viện phần mềm nguồn mở NVIDIA RAPIDS, được xây dựng trên CUDA, cung cấp khả năng thực thi các quy trình phân tích và khoa học dữ liệu từ đầu đến cuối hoàn toàn trên GPU. Nó dựa trên nguyên lý NVIDIA CUDA để tối ưu hóa điện toán ở mức độ thấp, nhưng vẫn thể hiện tính song song của GPU và tốc độ bộ nhớ băng thông cao thông qua giao diện Python thân thiện với người dùng.
Với RAPIDS GPU DataFrame, dữ liệu có thể được tải lên GPU bằng giao diện giống như Pandas, sau đó được sử dụng cho các thuật toán phân tích biểu đồ và học máy được kết nối khác nhau mà không cần tách khỏi GPU. Mức độ tương tác này có thể thực hiện được thông qua các thư viện như Apache Arrow. Người dùng có thể tạo dataframe GPU từ array NumPy, Pandas DataFrames và bảng PyArrow chỉ bằng một dòng mã. Các dự án khác có thể trao đổi dữ liệu bằng giao diện CUDA array. Điều này cho phép tăng tốc quy trình từ đầu đến cuối từ việc chuẩn bị dữ liệu đến học máy cho đến học sâu.
RAPIDS hỗ trợ chia sẻ bộ nhớ thiết bị giữa nhiều thư viện khoa học dữ liệu phổ biến. Nó giữ dữ liệu trên GPU và tránh việc sao chép qua lại vào bộ nhớ máy chủ.
Bài viết liên quan
- GPUDirect RDMA là gì?
- GPUDirect Storage là gì?
- So sánh các GPU Tensor Core của NVIDIA: B200, B100, H200, H100, A100
- NVIDIA giới thiệu nền tảng microservice Metropolis để chạy ứng dụng Edge AI trên Jetson
- Phát triển ứng dụng AI tại biên với NVIDIA Jetson AGX Orin & Developer Kit
- HPE và NVIDIA công bố ‘NVIDIA AI Computing by HPE’ để thúc đẩy cuộc cách mạng AI tạo sinh