1.1. Hướng dẫn Cài đặt Môi trường AI/ML trên AlmaLinux Toàn tập#
Tài liệu này cung cấp một hướng dẫn toàn diện để thiết lập một server AlmaLinux cho các tác vụ huấn luyện và triển khai mô hình AI/ML, bao gồm cả các công cụ quản lý code, container hóa và hỗ trợ GPU.
1.1.1. Bước 1: Cấu hình Hệ thống và Truy cập#
Các bước ban đầu này giúp bạn thiết lập quyền truy cập và bảo mật cơ bản cho server.
Cấu hình VS Code Remote SSH Việc này cho phép bạn làm việc trực tiếp trên server từ VS Code ở máy tính cá nhân.
Cài đặt Extension: Trên VS Code, cài đặt extension “Remote - SSH”.
Cấu hình Remote: Nhấn
F1
hoặcCtrl+Shift+P
, gõ “Remote-SSH: Connect to Host…” và chọn “Add New SSH Host…”. Nhậpssh <user>@<server-ip>
(ví dụ:ssh mbsapp1@10.19.105.85
).Chỉnh sửa file cấu hình:
Host my-aiml-server HostName 10.19.105.85 User mbsapp1
Kết nối: Chọn “Connect to Host…” và chọn
my-aiml-server
.
Cài đặt VS Code Extensions trên Server: Cài đặt từ file
.vsix
(Khi máy client không có mạng) Nếu máy client của bạn không có kết nối internet, bạn có thể cài đặt thủ công bằng cách sao chép file.vsix
từ máy client sang server.Lấy file
.vsix
: Trên một máy tính có mạng, truy cập VS Code Marketplace, tìm extension bạn cần và tải về file.vsix
.Sao chép file lên server: Sử dụng các công cụ như SCP (Secure Copy Protocol) hoặc các trình quản lý file qua SSH để chuyển file
.vsix
từ máy client lên server.Cài đặt bằng dòng lệnh: Trên terminal của server, chạy lệnh sau để cài đặt extension:
code --install-extension <đường_dẫn_đến_file.vsix>
Ví dụ:
code --install-extension ~/dbcode-1.2.3.vsix
Cấu hình
sudo
không cần nhập mật khẩu (Chi tiết) Để không phải nhập lại mật khẩusudo
liên tục, bạn có thể cấp quyền đặc biệt cho người dùng.Lưu ý Quan trọng: Thao tác này làm giảm đáng kể tính bảo mật của hệ thống. Chỉ nên thực hiện khi bạn là người duy nhất có quyền truy cập vào server và hiểu rõ rủi ro.
Sử dụng
visudo
: Bạn phải sử dụng lệnhsudo visudo
để chỉnh sửa file cấu hìnhsudoers
. Lệnh này sẽ mở file bằng một trình soạn thảo văn bản an toàn, giúp kiểm tra cú pháp trước khi lưu. Điều này ngăn ngừa các lỗi có thể khóa bạn khỏi quyềnsudo
.sudo visudo
Chỉnh sửa file: File
sudoers
sẽ được mở ra. Tìm đến cuối file và thêm dòng sau. Hãy chắc chắn thay<username>
bằng tên user của bạn (ví dụ:mbsapp1
).# Cho phép user chạy các lệnh sudo mà không cần nhập mật khẩu <username> ALL=(ALL) NOPASSWD: ALL
Lưu và thoát: Sau khi thêm dòng trên, bạn cần lưu file và thoát khỏi trình soạn thảo.
Nếu dùng
vi/vim
(mặc định): NhấnEsc
, sau đó gõ:wq
và nhấnEnter
.
Đổi mật khẩu User Sử dụng lệnh
passwd
để đổi mật khẩu user.passwd <username>
1.1.2. Bước 2: Cài đặt Các Công cụ Phát triển Cơ bản#
Đây là các công cụ nền tảng cho mọi dự án phần mềm, bao gồm cả AI/ML.
Cài đặt Git Git là công cụ quản lý phiên bản (version control) tiêu chuẩn, không thể thiếu để quản lý code.
Cài đặt Git:
sudo dnf install git -y
Cấu hình thông tin người dùng:
git config --global user.name "Tên của bạn" git config --global user.email "email@example.com"
Kết nối đến GitLab Để kết nối an toàn và tiện lợi với GitLab, bạn nên sử dụng khóa SSH.
Cấu hình thông tin người dùng cho GitLab: Sử dụng email của bạn để đồng bộ với tài khoản GitLab.
git config --global user.name "Dat Khong Tien" git config --global user.email "dat.khongtien@mbs.com.vn"
Tạo khóa SSH: Sử dụng
ssh-keygen
để tạo một cặp khóa. Để trống các tùy chọn khi được hỏi để sử dụng giá trị mặc định.ssh-keygen -t ed25519 -C "dat.khongtien@mbs.com.vn"
Thêm khóa công khai (public key) vào GitLab: Copy nội dung của file public key và dán vào phần cài đặt SSH Keys trên tài khoản GitLab của bạn.
cat ~/.ssh/id_ed25519.pub
Bạn có thể truy cập
User Settings > SSH Keys
trên GitLab để thêm khóa.Kết nối bằng HTTPS (sử dụng Personal Access Token) Đây là một phương pháp thay thế nếu bạn gặp vấn đề với xác thực SSH.
a. Tạo Personal Access Token (PAT) trên GitLab: Truy cập
User Settings > Access Tokens
trên GitLab.Token name: Đặt một tên dễ nhớ (ví dụ:
server-access-token
).Scopes: Chọn quyền
read_repository
vàwrite_repository
.Nhấn
Create personal access token
.Sao chép chuỗi token được tạo ra.
b. Sử dụng token để clone project: Khi clone, bạn có thể truyền token trực tiếp vào URL:
git clone https://gitlab-ci-token:<your_personal_access_token>@gitlab.mbs.com.vn/data-platform/models/customer-risk-clustering.git
Cài đặt Docker và Docker Compose Docker là công cụ container hóa, giúp đóng gói ứng dụng và môi trường vào container để đảm bảo tính nhất quán khi triển khai.
Gỡ bỏ các phiên bản Docker cũ (nếu có):
sudo dnf remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
Thiết lập kho lưu trữ Docker:
sudo dnf -y install dnf-plugins-core sudo dnf config-manager --add-repo [https://download.docker.com/linux/centos/docker-ce.repo](https://download.docker.com/linux/centos/docker-ce.repo)
Cài đặt Docker Engine, CLI và các plugin:
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Khởi động và kích hoạt Docker:
sudo systemctl start docker sudo systemctl enable docker
Dừng Docker:
sudo systemctl stop docker
Cấu hình user để chạy Docker không cần
sudo
(đăng xuất và đăng nhập lại để có hiệu lực):sudo usermod -aG docker mbsapp1
Cài đặt Make Make là một công cụ tự động hóa các tác vụ thường xuyên và lặp lại.
Cài đặt Make:
sudo dnf install make -y
1.1.3. Bước 3: Thiết lập Môi trường Python và Deep Learning#
Đây là bước quan trọng nhất để chuẩn bị cho các tác vụ huấn luyện và triển khai mô hình.
Cài đặt Python với
pyenv
pyenv
giúp quản lý nhiều phiên bản Python khác nhau trên cùng một hệ thống.Cài đặt các gói phụ thuộc:
sudo dnf install -y gcc openssl-devel bzip2-devel libffi-devel zlib-devel readline-devel sqlite-devel
Cài đặt
pyenv
:curl https://pyenv.run | bash
Thêm
pyenv
vào shell, sau đósource ~/.bashrc
:export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
Cài đặt các phiên bản Python Để chuẩn bị cho các dự án trong tương lai, đặc biệt là khi server bị ngắt kết nối mạng, bạn nên cài đặt một số phiên bản Python ổn định khác.
pyenv install 3.12.10 # pyenv install 3.11.9 # pyenv install 3.10.14 # pyenv install 3.9.18
Thiết lập phiên bản mặc định Để sử dụng một phiên bản cụ thể cho dự án, bạn có thể thiết lập phiên bản Python mặc định bằng lệnh sau.
pyenv global 3.12.10
Cài đặt Trình điều khiển GPU, CUDA và cuDNN Đây là các thành phần cốt lõi để chạy các mô hình deep learning trên GPU.
Cài đặt Driver NVIDIA:
sudo dnf install [https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm](https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm) sudo dnf install nvidia-driver nvidia-settings -y
Cài đặt CUDA Toolkit:
sudo dnf config-manager --add-repo [https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo](https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo) sudo dnf clean all sudo dnf install cuda -y
Thêm CUDA vào PATH: Thêm dòng sau vào
.bashrc
của bạn:export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
Cài đặt cuDNN: Tải file cuDNN từ trang web của NVIDIA và cài đặt thủ công.
Cài đặt Thư viện AI/ML ⚠️ LƯU Ý QUAN TRỌNG: Các thư viện dưới đây nên được cài đặt trong môi trường ảo của dự án, không phải môi trường global của hệ thống.
Sử dụng
pip
hoặcuv
để cài đặt các thư viện phổ biến.TensorFlow:
pip install tensorflow[and-cuda]
PyTorch:
pip install torch torchvision torchaudio
Các thư viện khác:
uv pip install numpy pandas scikit-learn matplotlib jupyter
Cài đặt Các Công cụ Quản lý Thư viện Để đảm bảo các công cụ quản lý thư viện hoạt động hiệu quả, hãy cập nhật
pip
trước tiên.Nâng cấp
pip
:pip install --upgrade pip
uv
(siêu nhanh):pip install uv
poetry, poethepoet
(mạnh mẽ):uv pip install poetry poethepoet --system
1.1.4. Bước 4: Quản lý Dự án và Môi trường#
Cấu hình
pyproject.toml
và Poe the Poet Sử dụngpyproject.toml
để quản lý dependencies cho cả môi trường training và serving. Thêm Poe the Poet (poe) để tự động hóa các tác vụ.Cài đặt
poe
vào môi trường ảo của dự án:poetry add --group dev poethepoet
Training: Cần nhiều thư viện để huấn luyện.
Serving: Cần ít thư viện nhất để triển khai nhẹ nhàng.
Ví dụ
pyproject.toml
:[tool.poetry] name = "my-ml-project" version = "0.1.0" description = "Project for training and serving ML models." authors = ["Your Name <you@example.com>"] [tool.poetry.dependencies] python = "^3.12.10" fastapi = "^0.111.0" uvicorn = "^0.30.1" requests = "^2.3.2" psycopg2-binary = "^2.9.9" pyodbc = "^5.1.0" minio = "^7.2.2" redis = "^5.0.5" [tool.poetry.group.training.dependencies] numpy = "^1.26.4" pandas = "^2.2.2" scikit-learn = "^1.5.0" tensorflow = "^2.16.1" torch = "^2.3.1" matplotlib = "^3.9.0" jupyter = "^1.0.0" [tool.poe.tasks] train = "python -m my_project.train" serve = "uvicorn my_project.serve:app --reload" test = "pytest"
Cách sử dụng:
Cài đặt cho training:
poetry install --with training
Cài đặt cho serving:
poetry install
Chuẩn bị Môi trường Offline Tải tất cả các gói cần thiết vào một thư mục để cài đặt khi server ngắt kết nối mạng.
Tải gói:
uv pip download -r <requirements_file> -d offline_packages
Cài đặt offline:
uv pip install --no-index --find-links=./offline_packages/ -r <requirements_file>
1.1.5. Bước 5: Các Công cụ Hữu ích cho Vận hành#
Jupyter Notebook/Lab ⚠️ LƯU Ý QUAN TRỌNG: Tương tự các thư viện ở trên, Jupyter Notebook cũng nên được cài đặt trong môi trường ảo của dự án để tránh xung đột phiên bản và giữ môi trường hệ thống sạch sẽ.
Một môi trường tương tác tuyệt vời cho việc khám phá dữ liệu và huấn luyện mô hình.
Cài đặt:
Nếu bạn đã lỡ cài đặt Jupyter vào môi trường global, hãy chạy lệnh sau để gỡ bỏ:
pip uninstall jupyter notebook
Sau đó, hãy thêm
jupyter
vào filepyproject.toml
và chạypoetry install --with training
để cài đặt vào môi trường ảo.
Cách chạy: Để chạy trên server và truy cập từ xa, hãy chạy lệnh sau từ môi trường ảo:
jupyter notebook --no-browser --port=8888 --ip=0.0.0.0 --allow-root
Giám sát Hệ thống
htop
: Giám sát tài nguyên CPU và RAM. Cài đặt:sudo dnf install htop -y
nvtop
: Giám sát tài nguyên GPU (cần có driver NVIDIA). Cài đặt:sudo dnf install nvtop -y
1.1.6. Bước 6: Các Lệnh Linux Cốt lõi cho MLOps#
Để quản lý và triển khai các dự án MLOps một cách hiệu quả, việc nắm vững các lệnh Linux là điều cần thiết. Dưới đây là các lệnh được nhóm theo chức năng, giúp bạn dễ dàng làm việc trên server AlmaLinux.
1.1.6.1. 1. Quản lý File và Thư mục#
Lệnh |
Chức năng |
Ví dụ |
---|---|---|
|
Liệt kê tất cả file và thư mục, bao gồm cả các file ẩn, với các thông tin chi tiết (quyền, kích thước, ngày sửa đổi). |
|
|
In ra đường dẫn của thư mục làm việc hiện tại. |
|
|
Thay đổi thư mục. |
|
|
Tạo một thư mục mới. Tùy chọn |
|
|
Xóa một file hoặc thư mục. Cẩn thận khi sử dụng vì lệnh này không thể hoàn tác. |
|
|
Sao chép file hoặc thư mục. |
|
|
Di chuyển hoặc đổi tên file/thư mục. |
|
|
Xem kích thước của một thư mục. |
|
|
Tìm kiếm file hoặc thư mục trong một đường dẫn. |
|
|
Tìm kiếm một chuỗi văn bản trong file. |
|
|
Hiển thị 10 dòng đầu tiên của file. |
|
|
Hiển thị 10 dòng cuối cùng của file. Rất hữu ích để xem log. |
|
|
Tạo một file trống. |
|
|
Thay đổi quyền truy cập của file hoặc thư mục. |
|
1.1.6.2. 2. Quản lý Tiến trình (Processes)#
Lệnh |
Chức năng |
Ví dụ |
---|---|---|
|
Liệt kê tất cả các tiến trình đang chạy trên hệ thống. |
|
|
Hiển thị các tiến trình đang chạy một cách tương tác, giúp bạn theo dõi tài nguyên CPU, RAM. |
|
|
Một phiên bản nâng cao và thân thiện hơn của |
|
|
Buộc một tiến trình phải dừng lại ngay lập tức. Thay |
|
|
Chạy một lệnh trong nền, đảm bảo nó vẫn tiếp tục chạy ngay cả khi bạn đóng terminal. |
|
|
Hiển thị các job đang chạy trong nền của terminal hiện tại. |
|
|
Xem nhật ký của một dịch vụ hệ thống. |
|
|
Xem trạng thái của một dịch vụ. |
|
|
Khởi động một dịch vụ. |
|
|
Khởi động lại một dịch vụ. |
|
|
Dừng một dịch vụ. |
|
1.1.6.3. 3. Quản lý Hệ thống và Mạng#
Lệnh |
Chức năng |
Ví dụ |
---|---|---|
|
Hiển thị dung lượng ổ đĩa. |
|
|
Hiển thị dung lượng RAM. |
|
|
Kiểm tra kết nối mạng đến một máy chủ. |
|
|
Liệt kê các cổng mạng đang lắng nghe. |
|
|
Truyền dữ liệu đến hoặc từ một URL. Rất hữu ích để kiểm tra API. |
|
|
Kiểm tra kết nối đến một cổng cụ thể, rất hữu ích để debug network. |
|
|
Hiển thị các hệ thống file đang được gắn. Lệnh này hữu ích khi bạn cần truy cập vào một ổ đĩa hoặc phân vùng dữ liệu. |
|
|
Xem socket mạng đang lắng nghe. |
|
|
Tải file từ internet. |
|
1.1.6.4. 4. Quản lý Gói và Cài đặt#
Lệnh |
Chức năng |
Ví dụ |
---|---|---|
|
Cập nhật tất cả các gói đã cài đặt. |
|
|
Cài đặt một gói phần mềm. |
|
|
Gỡ bỏ một gói phần mềm. |
|
|
Tìm kiếm các gói có chứa từ khóa. |
|
|
Liệt kê các gói đã được cài đặt. |
|
|
Liệt kê các thư viện Python đã cài đặt trong môi trường ảo hiện tại. |
|
|
Cài đặt một thư viện Python. |
|
|
Tạo một môi trường ảo Python mới. |
|
|
Kích hoạt môi trường ảo Python. |
|
|
Hủy kích hoạt môi trường ảo. |
|