Mọi lập trình viên đều đã từng nghe câu này, thường là được lẩm bẩm qua kẽ răng vào lúc hai giờ sáng: "Nó chạy tốt trên máy tôi." Khi một bản build vượt qua ở môi trường local nhưng lại sụp đổ ở staging, chúng ta thường có xu hướng đổ lỗi cho phiên bản framework, một biến môi trường bị thiếu, hoặc chính Docker. Thường xuyên hơn mức chúng ta muốn thừa nhận, hệ điều hành mới chính là thủ phạm thực sự. Đường dẫn tệp, các lời gọi hệ thống (system calls), trình quản lý gói và hành vi của nhân (kernel) đều định hình cách mã nguồn vận hành. Chọn đúng hệ điều hành không phải là để gia nhập một "bộ lạc" nào đó. Đó là về việc loại bỏ sự ma sát giữa máy tính xách tay của bạn và môi trường production.
Windows: Kẻ đa năng
Windows vẫn là lựa chọn mặc định vì một lý do đơn giản: phần cứng hoạt động rất trơn tru. Cắm một thiết bị ngoại vi vào, và khả năng cao là đã có sẵn driver. Đối với các lập trình viên làm việc trong hệ sinh thái .NET, Visual Studio vẫn là tiêu chuẩn vàng. IntelliSense, các công cụ debug và scaffolding dự án mang lại cảm giác rất "native" vì chúng được xây dựng dành riêng cho nền tảng này.
Với Windows Subsystem for Linux 2, Microsoft đã thu hẹp đáng kể khoảng cách giữa Windows và các quy trình làm việc dựa trên Unix. WSL2 chạy một nhân Linux thực thụ bên trong một máy ảo tiện ích nhẹ, nghĩa là bạn có thể gọi bash, sử dụng apt và chạy Ubuntu mà không cần cài đặt dual-boot. Sự tích hợp mượt mà đến mức nhiều lập trình viên quên mất rằng họ không phải đang dùng Linux thuần túy.
Nhưng sự trừu tượng hóa này cũng có những giới hạn. Docker Desktop trên Windows dựa vào một máy ảo Linux cho engine của nó, và việc chuyển đổi hệ thống tệp giữa nhân Windows NT và container Linux sẽ gây ra độ trễ. Các thao tác nặng về I/O, chẳng hạn như mount các thư mục node_modules lớn hoặc biên dịch bên trong một volume, sẽ chạy chậm hơn đáng kể so với trên Linux bare-metal. Các bản cập nhật Windows cũng có thói quen tự động khởi động lại máy ngay giữa chừng khi bạn đang làm việc, điều này không hề lý tưởng khi bạn đang tập trung sâu vào một phiên debug.
Windows tỏa sáng đối với sinh viên, game thủ và các kỹ sư triển khai các ứng dụng .NET. Nếu bạn cần một chiếc máy có thể chạy Steam sau giờ làm và Visual Studio trong ngày, thì đây là lựa chọn thực tế nhất.
Linux: Tiêu chuẩn máy chủ
Nếu môi trường production chạy trên Linux, việc phát triển trên Linux sẽ giúp loại bỏ những bất ngờ không mong muốn. Hệ điều hành này được xây dựng cho các máy chủ, và các giả định thiết kế của nó hoàn toàn khớp với những gì môi trường đám mây mong đợi. Triết lý Unix coi mọi thứ đều là tệp có nghĩa là cấu hình, thiết bị phần cứng và các tiến trình đang chạy đều nằm đâu đó trong cây hệ thống tệp. Sự nhất quán đó giúp việc tự động hóa trở nên đơn giản. Bạn có thể viết script triển khai với bash, quản lý các dịch vụ với systemd và điều phối các container mà không cần phải chuyển đổi giữa hai kiến trúc nhân khác nhau.
Docker được xây dựng dựa trên các nguyên bản (primitives) của Linux. Namespaces và cgroups là các thành phần gốc ở đây, vì vậy các container khởi động nhanh hơn và chạy với tốc độ gần với bare-metal hơn so với các nền tảng khác. Chi phí tài nguyên (overhead) là tối thiểu, các trình quản lý gói rất hoàn thiện, và bạn có thể lược bỏ hệ thống để chỉ giữ lại những gì mình cần. Một máy chủ Linux headless có thể chạy trong nhiều năm mà không cần khởi động lại.
Sự đánh đổi chính là độ bóng bẩy của giao diện desktop. Sự hỗ trợ cho các phần mềm thương mại thường tụt lại phía sau. Bạn sẽ không tìm thấy các ứng dụng Adobe Creative Cloud bản gốc, và một số IDE độc quyền hoặc công cụ cộng tác sẽ yêu cầu các giải pháp thay thế (workarounds). Việc thiết lập phần cứng có thể đòi hỏi sự kiên nhẫn. Card Wi-Fi, bộ chuyển đổi Bluetooth và đồ họa hybrid đôi khi cần cài đặt driver thủ công hoặc tinh chỉnh module kernel. Driver NVIDIA đã cải thiện đáng kể, nhưng để cấu hình CUDA chính xác vẫn đòi hỏi phải đọc tài liệu với giả định rằng bạn đã quen thuộc với việc sử dụng terminal.
Các kỹ sư backend, chuyên gia DevOps và bất kỳ ai đang xây dựng hạ tầng AI nên coi Linux là lựa chọn mặc định. Khi môi trường production của bạn chạy Ubuntu hoặc RHEL, việc mô phỏng môi trường đó ở local sẽ giúp tiết kiệm hàng giờ đồng hồ debug khi triển khai.
macOS: Unix tinh tế
macOS nằm ở một vùng trung gian, thu hút những lập trình viên muốn một terminal hoạt động giống Linux và một giao diện GUI hoạt động như một sản phẩm tiêu dùng. Bên dưới lớp vỏ, nó là một hệ điều hành Unix đã được chứng nhận, nghĩa là bash, zsh, make, ssh và git đều hoạt động chính xác như những gì bạn mong đợi trên một máy chủ. Apple Silicon đã thay đổi hoàn toàn cuộc chơi. Các dòng chip M mang lại hiệu năng cấp độ máy tính để bàn trong khi vẫn kéo dài thời lượng pin laptop lên mức từ 10 đến 20 giờ. Bạn có thể biên dịch một dự án, chạy một stack local và thực hiện cuộc gọi video mà không cần quạt phải quay mạnh.
Đối với các lập trình viên di động, macOS là lựa chọn không thể thương lượng. Xcode và trình giả lập iOS chỉ chạy trên phần cứng của Apple. Hệ sinh thái này cũng có xu hướng ưu ái các quy trình làm việc sáng tạo và full-stack. Trackpad và màn hình rất tuyệt vời, cùng với độ tin cậy của chế độ sleep/wake giúp bạn chỉ cần mở nắp máy là có thể tiếp tục công việc ngay lập tức.
Nhược điểm nằm ở chi phí và tính linh hoạt. Bạn phải trả một mức giá cao hơn cho các nâng cấp bộ nhớ và lưu trữ, điều mà vốn dĩ rất đơn giản trên một chiếc PC tự lắp ráp hoặc ThinkPad. Danh mục phần cứng cũng khá hạn chế. Nếu bạn cần một GPU cụ thể để huấn luyện mô hình cục bộ hoặc các cổng kết nối đặc thù cho thiết bị phòng thí nghiệm, một chiếc Mac có thể sẽ không đáp ứng được nếu không có các bộ vỏ ngoài (enclosures) và dongle.
Các nhà phát triển full-stack, kỹ sư iOS và những người sáng lập startup coi trọng tính di động thường tìm đến đây. Đó là một lựa chọn đắt đỏ, nhưng giúp giảm thiểu tối đa những trở ngại trong công việc hàng ngày.
Hệ điều hành có quan trọng đối với AI không?
Bản thân mô hình không hề quan tâm đến điều đó. Một mô hình ngôn ngữ lớn chạy qua Ollama, LM Studio hoặc vLLM sẽ tạo ra các token giống hệt nhau, bất kể nhân (kernel) của bạn được biên dịch bởi Microsoft, Linus Torvalds hay Apple. Các công cụ của bạn quan trọng hơn nhiều so với hệ điều hành. Khi bạn đang xây dựng các AI agent, hãy tập trung vào việc làm chủ quản lý phụ thuộc (dependency management) trong Python, môi trường thực thi Node.js, Docker để tạo ra các môi trường có thể tái lập, tích hợp API và quản lý bộ nhớ cho các cửa sổ ngữ cảnh (context windows).
Tuy nhiên, các hệ thống AI trong môi trường production hầu hết đều chạy trên Linux. Các trình điều khiển GPU trung tâm dữ liệu của NVIDIA và bộ công cụ CUDA được phát triển và tối ưu hóa cho Linux trước tiên. Các gánh nặng tài nguyên của giao diện đồ họa được loại bỏ, để lại nhiều VRAM và chu kỳ CPU hơn cho việc huấn luyện và suy luận (inference). Nếu bạn đang thuê tính toán đám mây, gần như chắc chắn bạn đang SSH vào một instance Linux. Đối với việc thử nghiệm cục bộ, một chiếc MacBook với Apple Silicon hoạt động yên tĩnh và tiết kiệm điện năng, nhưng khi đến lúc cần huấn luyện tại
