Khám phá Linux - một nền tảng máy tính khoa học

Xử lý lượng dữ liệu lớn bằng Sage và Python

Linux® là một nền tảng tuyệt vời dùng trong máy tính khoa học và thường được cộng đồng học thuật sử dụng cho nhiều nhiệm vụ khác nhau. Trong khi nhiều dự án nguồn mở tập trung vào các ứng dụng cụ thể thì các dự án toán học Sage cung cấp một khả năng giải toán tổng quát hơn. Python là ngôn ngữ chính cho rất nhiều ứng dụng khoa học cấu hình cao nhất, mà bài viết này sẽ thảo luận đến.

Paul Ferrill, Trưởng ban công nghệ, ATAC

Paul Ferrill đã viết bài cho báo thương mại máy tính trong hơn 20 năm. Ông đã bắt đầu viết các bài đánh giá về mạng máy tính cho tạp chí PC Magazine dựa trên các sản phẩm LANtastic và các phiên bản đầu tiên của Novell Netware. Paul có bằng BSEE và MSEE. Ông cũng viết nhiều phần mềm cho nhiều nền tảng kiến trúc máy tính khác nhau đến nỗi chính ông cũng không thể nhớ hết được.



26 02 2013

Linux trong cộng đồng khoa học

Sẽ không có gì ngạc nhiên rằng Linux là một sự hiện diện điển hình trong cộng đồng khoa học. Có rất nhiều giải pháp từ các hệ thống điện toán hiệu năng cao đến các phần mềm hiển thị trực quan. Thậm chí còn có một bản phân phối đầy đủ dựa trên Red Hat (bản Linux dành cho doanh nghiệp) tập trung vào khả năng tính toán khoa học, được gọi là Scientific Linux.

Bản phân phối Sage và Python của Enthought

Bài này xem xét hai cách khác nhau về sử dụng một máy trạm Linux cho quá trình tính toán khoa học. Cách đầu tiên là hệ thống toán học nguồn mở Sage và cách thứ hai là Bản phân phối Python của Enthought (EPD). Cả hai cách đều sử dụng một số công cụ Python nguồn mở cốt lõi để thực hiện những việc phức tạp. Nếu bạn muốn thử chúng, hãy cài đặt các đoạn mã riêng lẻ bằng cách sử dụng hệ điều hành Ubuntu.

Sage có ưu điểm hơn trong hai cách trên ở chỗ nó có nhiều hơn một lớp vỏ qua một số các công cụ bên dưới khác nhau. Thậm chí từ dòng lệnh Sage bạn có thể tương tác với các sản phẩm thương mại như MATLAB hoặc Mathematica. Tại dấu nhắc của Sage, về cơ bản bạn tương tác với IPython bằng việc truy cập vào tất cả các tính năng của nó. Bạn cũng phải suy nghĩ về các đối tượng và các phương pháp khi bạn bắt đầu tìm hiểu những khả năng của Sage. Sage bao gồm một số các hệ thống đại số của máy tính khác nhau và cho phép người dùng tương tác với chúng từ dòng lệnh.

Điều quan trọng cần lưu ý rằng Sage dựa trên Python nhưng có phân tích trước cú pháp từng câu lệnh trước khi chuyển nó tới trình thông dịch Python. Điều này có thể gây ra một số nhầm lẫn khi xem xét các lệnh Sage tương tác đơn giản. Lý do cơ bản đối với hành vi này là mong muốn thực hiện gõ các lệnh vào Sage theo nghĩa toán học càng trực quan càng tốt. Một ví dụ hay là ký hiệu lũy thừa. Trong Python thuần túy, bạn phải gõ 2**4 để làm cho lũy thừa hai thành bốn. Trong Sage bạn sử dụng ký hiệu mũi tên lên (^), như là 2^4. Sage cũng xử lý một số hoạt động ví dụ như chia số nguyên khác với Python cơ bản.

NumPy và SciPy

Hai đoạn mã trò chơi câu đố cơ bản nổi tiếng nhất với cả hai Sage và EDP là NumPy và SciPy. Cả hai dự án đã được dùng từ giữa đến cuối những năm 1990 và ban đầu được khởi động bởi Travis Oliphant, hiện nay là một nhân viên tại Enthought. NumPy cung cấp các phương thức số cốt lõi để thao tác các mảng và các ma trận. SciPy phụ thuộc vào NumPy với cấu trúc dữ liệu mảng cơ bản của nó và chứa một loạt các mô đun dùng cho tất cả mọi thứ từ đại số tuyến tính đến xử lý tín hiệu. Enthought là nhà tài trợ của cả hai dự án và tiếp tục đóng góp rất nhiều vào phiên bản mới.


Cài đặt Sage

Có sẵn một số tùy chọn để cài đặt Sage. Để xem xét qua về Sage mà không cần cài đặt, bạn có thể sử dụng một phiên bản trực tiếp từ đĩa CD. Bạn cũng có thể chạy đĩa CD trực tiếp trong một máy ảo như Oracle VM VirtualBox hay VMware Player. Bài này xem xét việc cài đặt Sage trên cả hai máy tính vật lý và máy ảo đang chạy phiên bản Ubuntu (12.04) mới nhất.

Máy tính vật lý

Cài đặt Sage từ nguồn là phương pháp tin cậy nhất trên Unbuntu 12.04 bởi vì hệ điều hành này chỉ mới được phát hành gần đây. Tải tệp tarball nguồn và giải nén nó vào một thư mục thuận tiện. Bạn cũng cần cài đặt một số thư viện cần thiết trước khi tiến hành build, bạn có thể thực hiện việc này bằng các lệnh sau đây:

sudo apt-get install build-essential gfortran
sudo apt-get install texlive xpdf evince

sudo apt-get install tk8.5-dev

Sau khi cài đặt các thư viện cần thiết, bạn đã sẵn sàng build Sage, bạn có thể chạy với lệnh sau đây:

make

Lúc này, hãy đi xem phim hoặc chợp mắt một lát. Toàn bộ quá trình build có thể mất vài giờ trên một máy tính để bàn thông thường. Bạn sẽ thấy một màn hình như trong Hình 1 nếu tất cả mọi thứ đang được biuld một cách chính xác.

Hình 1. Màn hình xây dựng Sage
Chụp ảnh màn hình của quá trình xây dựng Sage đã hoàn thành

Máy ảo

Việc cài đặt trên một máy ảo là một tùy chọn tốt nếu bạn không thích mạo hiểm và chỉ muốn bắt đầu sử dụng Sage. Một gói OVA (Open Virtualization Archive – Tệp lưu trữ ảo hóa mở) hiện có sẵn để tải về trên trang web Sage cùng với các gói tệp nhị phân cho Fedora 16 và Ubuntu 10.04.3. OVA là một gói tệp duy nhất (về thực chất là một tệp tar) có chứa tất cả các tệp cần thiết để khởi chạy máy ảo theo OVF (Open Virtualization Format – Định dạng ảo hóa mở).


Sử dụng Sage

Khi bạn đã cài đặt xong Sage, bạn đã sẵn sàng bắt đầu cuộc hành trình khám phá và khai thác toán học. Sage vừa có một dòng lệnh và vừa có một giao diện dựa trên web.

Giao diện dòng lệnh

Để khởi chạy phiên bản dòng lệnh từ thư mục, nơi bạn đã build Sage, bạn chỉ cần gõ lệnh sau:

./sage

Hình 2 cho thấy một ví dụ về trình thông dịch Sage và một số cách diễn giải toán học đã đề cập ở trên.

Hình 2. Các cách diễn giải toán học và giao diện dòng lệnh của Sage
Chụp ảnh màn hình của giao diện dòng lệnh Sage với các diễn giải toán học

Sự khác biệt trong phép chia số nguyên liên quan tới cách Python xử lý kiểu phép toán (số nguyên, dấu phẩy động và v.v). Trong Python, biểu thức 2/3 gán một kết quả số nguyên làm tròn xuống đến không. Sage xử lý toán tử chia như là một hàm dựng cho các số hữu tỷ, có nghĩa là bạn có thể thực hiện các phép toán dựa vào các phân số theo nhiều cách tương tự như bạn làm trên giấy. Ví dụ, nếu bạn gõ 2/3 + 2/3 tại dấu nhắc của Sage, bạn sẽ nhận được kết quả là 4/3. Nếu bạn gõ cùng một điều tương tự trong Python, kết quả là 0. Bạn có thể ngầm định bắt dùng kiểu chữ khi sử dụng float() hoặc int() như trong Hình 2.

Giao diện dựa trên web

Để sử dụng Sage Notebook (Sổ tay Sage), bạn có thể gõ hoặc notebook() sau khi khởi động Sage hoặc sử dụng lệnh sau:

./sage --notebook

Lệnh này khởi chạy máy chủ Sage và trình duyệt web mặc định sẽ mở trang chủ Sage Notebook. Bạn sẽ tìm thấy nhiều tính năng trong sổ tay để làm cho việc thao tác công việc của bạn dễ dàng, chẳng hạn như lưu và nạp các tờ bảng tính vào một tệp, cộng với các chức năng sao chép, xóa và đổi tên thông thường. Sage làm cho công việc cộng tác dễ dàng với các chức năng Chia sẻ và Xuất bản trong Hình 3.

Hình 3. Các tính năng của Sage Notebook
Chụp ảnh màn hình của Sage Notebook cho thấy một thử nghiệm đơn giản, các phương trình được tính toán và được vẽ đồ thị

Các gói đại số của máy tính

Bản phân phối Sage cơ sở bao gồm một số gói đại số máy tính bao gồm có GAP, Maxima, Pari và Singular. Mỗi gói có những người ủng hộ riêng của mình trong cộng đồng toán học và cung cấp chức năng hơi khác nhau một chút. Điều chủ yếu ở đây là ở chỗ Sage bao gồm mỗi gói này trong một bản phân phối cơ sở, có nghĩa là bạn không phải tải về và cài đặt chúng một cách riêng biệt.

Hình 4 cho thấy một ví dụ về sử dụng Maxima để thực hiện một số phép toán ma trận. Điều này đã được thực hiện bằng cách sử dụng Sage Notebook và nó cho thấy mục nhập vào của người sử dụng có màu đen cùng với kết quả màu xanh lam. Hai dòng đầu tiên tạo ra một ma trận với các mục nhập bằng i/j , ở đây phạm vi i và j là từ 1 đến 4. Lưu ý rằng đây là những số hữu tỷ (các phân số).

Hình 4. Các phép toán ma trận với Maxima
Chụp ảnh màn hình với các ví dụ về cách Maxima diễn giải các phép toán ma trận, với các phương trình tiếp sau là các kết quả

Xuất bản các bài báo khoa học

Việc xuất bản các bài báo khoa học là một yêu cầu đối với nhiều người trong cộng đồng giáo dục. Sage đòi hỏi rằng mọi đối tượng đều có một đại diện LaTeX. Điều này được gắn trực tiếp với nhu cầu sản xuất các đồ họa và văn bản có chất lượng-xuất bản bằng cách sử dụng ngôn ngữ TeX. Hãy hiểu rõ rằng bạn cần một bản cài đặt TeX đầy đủ để tận dụng lợi thế của tất cả các tính năng mà Sage cung cấp.


Cài đặt EPD

Tính toán khoa học với Python là những gì mà Enthought phải làm với tư cách là một công ty. Các đề xuất và sự hỗ trợ sản phẩm thương mại của Enthought là những thứ phải trả theo các hóa đơn, nhưng chúng vẫn đóng góp cho cộng đồng nguồn mở theo cách tốt đẹp. Những đóng góp của chúng trực tiếp hoạt động tốt trên cơ sở mã NumPy và SciPy cũng như khi trình bày tại hội nghị thường niên PyCon và khi lưu trữ hội nghị SciPy trên máy chủ.

Bạn có thể sử dụng trình quản lý phần mềm Ubuntu để cài đặt các đoạn mã khác nhau cần thiết để bắt đầu chạy với IPython, NumPy và SciPy hoặc bạn có thể chỉ tải về và cài đặt phiên bản miễn phí của EPD, được biết đến là EPD Free (EPD miễn phí). Enthought cung cấp cả hai phiên bản 32 - và 64-bit của EPD Free, đã được thử nghiệm trên Red Hat, Ubuntu, openSUSE. Chúng đã cảnh báo rằng một số hệ thống Linux 64-bit không bao gồm các thư viện của 32-bit, vì vậy cần có một phiên bản 64-bit của gói đó.

Để cài đặt EPD Free, đầu tiên hãy tải về kịch bản lệnh của trình cài đặt và sau đó chạy nó với lệnh sau đây:

bash epd_free-7-2-2-rh5-x86.sh

Để làm cho việc khởi chạy EPD trong tương lai dễ dàng hơn, bạn cần phải thêm một vài dòng mã vào tệp khởi động shell của mình (hoặc .cshrc hoặc .bash_profile). Ubuntu sử dụng shell bash là mặc định, vì vậy tôi hiển thị mã dựa vào đó. Với bài viết này tôi sử dụng các dòng sau:

export PATH=/home/paul/Downloads/epd_free-7.2-2-rh5-x86_64/bin:$PATH

Sử dụng EPD

IPython có điểm chung khác giữa EPD và Sage vì nó là công cụ giao diện người dùng chính. EPD cài đặt cho cả một giao diện dòng lệnh lẫn chức năng sổ tay dựa trên web, giống như Sage.

Giao diện dòng lệnh

Giao diện điều khiển dựa trên Qt cung cấp một số chức năng nâng cao, bao gồm cả tô mầu toàn bộ cú pháp bằng cách sử dụng thư viện Pygments. Nó cũng cung cấp khả năng để thực hiện các bản vẽ đồ thị trực tuyến. Để có được khả năng này, bạn có thể khởi chạy IPython bằng lệnh sau đây:

ipython --pylab

Hình 5 cho thấy giao diện điều khiển Qt với một bản vẽ đồ thị nhúng.

Hình 5. Tạo một dự án PyDev mới
Chụp ảnh màn hình của giao diện PyDev để tạo ra một dự án mới có một đồ thị được vẽ ở dưới cùng

Giao diện dựa trên web

Phiên bản mới nhất của IPython (0.12) bao gồm một khả năng sổ tay dựa trên web, tương tự như Sage. Để có được chức năng sổ tay này, bạn cần phải cài đặt các phụ thuộc, bao gồm máy chủ web ZeroMQ và Tornado. Để khởi chạy chức năng sổ tay từ dòng lệnh, hãy gõ lệnh như sau vào một cửa sổ của thiết bị đầu cuối:

ipython notebook

Lệnh này khởi động công cụ web Tornado và khởi chạy trình duyệt web mặc định mở ra trang bảng điều khiển. Sau đó, nếu bạn chọn chức năng sổ tay mặc định, bạn sẽ thấy một cửa sổ mới như trong Hình 6.

Hình 6. Chức năng sổ tay của iPython
Chụp ảnh màn hình của dự án từ Hình 5 được triển khai thực hiện trong Python Notebook

Một điều khác về chức năng sổ tay web là bạn cần sử dụng Control-Enter khi bạn muốn thực thi mã. Điều này giúp thêm vào khả năng nhập nhiều dòng mã, như trong Hình 6 và có tất cả mọi thứ trong hộp input được thực hiện tuần tự. Do đó, bạn có thể dễ dàng chia nhỏ các chức năng thành các khối có thể quản lý được.

Bạn có thể chú thích các chức năng sổ tay của mình bằng cách sử dụng cú pháp Markdown. Nếu bạn chưa quen với Markdown, về bản chất đó là một cách để tạo ra HTML (Hypertext Markup Language – Ngôn ngữ đánh dấu siêu văn bản) đã định dạng bằng cách sử dụng văn bản thuần. Ví dụ, một dấu thăng (#) theo sau là một khoảng trống được sử dụng để chỉ một H1 trong HTML, trong khi hai dấu hiệu thăng được sử dụng cho H2 và v.v. Điều này cho phép bạn thêm chú thích hoặc tài liệu hướng dẫn để bổ sung mã và đồ họa của mình.

Pandas

Thư viện phân tích dữ liệu Python hay còn gọi là Pandas, là một công cụ khác gắn với SciPy và NumPy được tạo ra đặc biệt để giải quyết các nhiệm vụ phân tích dữ liệu. Pandas kết hợp một số lượng lớn các thư viện cùng với một số mô hình dữ liệu tiêu chuẩn để cung cấp các công cụ cần thiết để thao tác dữ liệu lớn một cách hiệu quả. Các tệp giá trị phân cách bằng dấu phẩy (CSV) đại diện cho một trong những cách phổ biến nhất về phân phối dữ liệu giữa các bên liên quan. Pandas cung cấp chức năng thư viện tối ưu hóa để đọc và ghi nhiều định dạng tệp, bao gồm định dạng CSV và định dạng HDF5 hiệu quả.

Các mô đun read_csv biết cách phân tích các tệp CSV điển hình có thông tin đầu trang trong hàng đầu tiên. Nó cũng biết cách xử lý các tệp có các ngày tháng hoặc thời gian bằng cách sử dụng một trình phân tích cú pháp dựng sẵn. Pandas bao gồm một mô đun các công cụ ngày tháng (datetools) có một danh sách dài các thường trình thao tác để thực hiện các loại phép toán ngày tháng khác nhau. Liệt kê 1 cho thấy một đoạn mã của tài liệu hướng dẫn của Pandas cho thấy cách tìm một ngày cách bốn tháng và năm ngày:

Liệt kê 1. Ví dụ mẫu về phép chiếu ngày tháng của Pandas
d = datetime(2012, 4, 20)
d + pandas.DateOffset(months=4, days=5)
datetime.datetime(2012, 8, 25, 0, 0)

Pandas thực sự tỏa sáng khi nói đến việc phân chia và chia nhỏ các bộ dữ liệu lớn. Sau khi bạn đã nhập khẩu dữ liệu của mình vào một cấu trúc dữ liệu nguyên gốc, bạn có một loạt các công cụ cho bạn tùy ý sử dụng để thực hiện đúng là bất kỳ kiểu thao tác nào. Bạn có thể phân chia dữ liệu bằng cách sử dụng cú pháp phân loại Python tiêu chuẩn, thực hiện các phép toán trên tất cả hoặc một phần của dữ liệu hoặc vẽ đồ thị nó bằng cách sử dụng matplotlib. Nếu bạn cần thực hiện bất cứ nhiệm vụ thao tác dữ liệu nào, bạn chắc chắn muốn tăng tốc bằng Pandas.


Tóm tắt

Linux đúng là có nhiều khả năng hỗ trợ hầu như bất kỳ nhiệm vụ tính toán khoa học nào. Nó cũng được hậu thuẫn rất nhiều trong cộng đồng học thuật và đang nhanh chóng giành được cảm tình từ những người dùng trong ngành công nghiệp mới đang tìm kiếm các cách để làm giảm ngân sách phần mềm của họ. Những công cụ này cung cấp sự thay thế đầy đủ hơn cho các đối tác thương mại của mình và tốt hơn hết là tất cả chúng đều miễn phí. Đối với các khách hàng đang tìm kiếm các phần mềm có hỗ trợ đầy đủ, có Enthought và dịch vụ EPD thương mại của họ. Họ cũng cung cấp sự hỗ trợ đầy đủ và các khóa huấn luyện cho tất cả các khách hàng doanh nghiệp.

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

Thảo luận

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Nguồn mở
ArticleID=859545
ArticleTitle=Khám phá Linux - một nền tảng máy tính khoa học
publish-date=02262013