Cách sử dụng các thư viện Python arm64 gốc để thực hiện, nhưng cho phép sử dụng Rosetta 2 khi cần
Tôi không thể nói cho bạn biết tôi đã phấn khích như thế nào khi lần đầu tiên đọc về chip M1 Mac hoàn toàn mới. Sau vài tháng [hoặc có thể là một năm] chờ đợi để có được một chiếc cho mục đích sử dụng Khoa học dữ liệu và lập trình của mình, cuối cùng tôi cũng có được một chiếc
Mặc dù trải nghiệm tổng thể thực sự đáng kinh ngạc, nhưng để thực sự khai thác hiệu suất của máy M1 cho khoa học dữ liệu và lập trình python, bạn sẽ cần cài đặt các thư viện arm64 [M1] gốc và để lại một chút linh hoạt để vẫn có thể chạy Rosetta . Trong các đoạn sau, tôi sẽ cung cấp cho bạn một số gợi ý hữu ích nhất để giúp bạn thiết lập và chạy tất cả các gói python đó trong máy M1 của bạn
Ngăn xếp công nghệ tôi sử dụng cho mục đích lập trình và khoa học dữ liệu của mình bao gồm
- chung cư
- Scikit-Tìm hiểu
- PyTorch
- dòng chảy căng
- thời gian
- Flask hoặc FastAPI
- Hợp lý hóa
- docker
Được rồi, nếu bạn đang muốn sử dụng bất kỳ cái nào ở trên, bài viết này sẽ giúp bạn bắt đầu. Một lần nữa, khi thiết lập đang hoạt động, chúng tôi muốn tận dụng lợi thế của chip M1 để chạy càng nhiều thư viện này càng tốt, nhưng chúng tôi cũng tìm kiếm một thiết lập linh hoạt cho phép các gói không có nguồn gốc cho kiến trúc ARM của M1. Hy vọng rằng cộng đồng nguồn mở, các tổ chức và các công ty có liên quan có thể sớm khắc phục một số vấn đề này để các nhà phát triển có thể khai thác các khả năng của M1 với trải nghiệm người dùng tốt hơn
Lưu ý rằng quá trình di chuyển cá nhân của tôi đã được thực hiện từ MacBook Pro 13" đầu năm 2015 sang MacBook Pro 13" [M1] năm 2020. Vì mục đích này, tôi có thể nói với bạn rằng tôi đã sử dụng Time Machine HD và quá trình này thực sự suôn sẻ. Bạn cũng có thể thực hiện việc di chuyển này thông qua WiFi hoặc kết nối có dây
Cài đặt Conda trên máy Mac M1
Xóa cài đặt Conda trước đó
Để sử dụng Conda trên máy M1, trước tiên chúng tôi cần gỡ cài đặt mọi phiên bản trước đó, nếu không, nếu chúng tôi sử dụng môi trường cũ, chúng tôi sẽ chạy chúng thông qua Rosetta. Điều này chỉ cần thiết nếu chúng tôi đang di chuyển từ máy Mac cũ hơn mà bạn đã cài đặt Conda. Chúng ta cần chạy hai lệnh sau bằng Terminal
# remove previous conda installationsconda install anaconda-clean
anaconda-clean --yes # you may need to uninstall previous Homebrew/bin/bash -c "$[curl -fsSL //raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh]"
Cài đặt Conda trên M1 đến Anaconda [từ 05. 2022]
Kể từ tháng 5 năm 2022, Anaconda đã phát hành hỗ trợ chính thức cho M1. Bây giờ bạn có thể truy cập ngay và tải xuống phiên bản phù hợp với mình. Cá nhân tôi khuyên dùng giao diện đồ họa nếu bạn mới lập trình hoặc chỉ muốn một gói Mac mà bạn có thể cài đặt
Sau khi hoàn tất quy trình, đừng quên khởi tạo cài đặt Conda của bạn, để bạn có thể tạo, kích hoạt và thử nghiệm với các môi trường ảo khác nhau…
conda init
Cài đặt Conda Miniforge thông qua Homebrew [không dùng nữa]
Trước khi Anaconda phát hành hỗ trợ chính thức, giải pháp thay thế tốt nhất của chúng tôi là cài đặt Homebrew và Miniforge cùng với nó. Chạy phần sau trên một thiết bị đầu cuối…
# install Homebrew/bin/bash -c "$[curl -fsSL //raw.githubusercontent.com/Homebrew/install/HEAD/install.sh]"# install Miniforgebrew install miniforge
Hoàn hảo. Giờ đây, bạn có thể chạy bất kỳ lệnh Conda nào và theo mặc định, các gói bạn tải xuống thông qua Conda hoặc Pip sẽ hỗ trợ kiến trúc ARM, đây là kiến trúc phù hợp với máy M1 của bạn
Giới thiệu về môi trường Conda
Vì một số lý do, tôi thích sử dụng Conda làm trình quản lý môi trường và gói Python mặc định của mình. Chúng tôi sẽ sử dụng Conda ở đây cho mục đích này và chúng tôi chỉ sử dụng nó để đặt arm64 [M1] làm kiến trúc mặc định cho các kênh Conda của bạn
Bạn có thể muốn tạo một môi trường mới để tiếp tục xem qua bài viết này
conda create --name your_new_env_name
conda activate your_new_env_name
Để biết thêm thông tin về cách quản lý môi trường, vui lòng tham khảo tài liệu Conda hoặc tài liệu hướng dẫn của họ
Cài đặt thư viện ARM [M1 Apple Silicon] gốc thông qua Conda hoặc pip
Hầu hết các thư viện tôi đã đề cập lúc đầu đều đã hoạt động nguyên bản cho chip M1. Vì bạn muốn đạt được càng nhiều lợi thế từ máy mới của mình càng tốt, nên cách tiếp cận mặc định của bạn để cài đặt bất kỳ thư viện nào hiện đang sử dụng các kênh mặc định từ quá trình cài đặt Miniforge của bạn. Bất kỳ gói nào bạn cài đặt từ bây giờ, sử dụng Conda hoặc pip, sẽ sử dụng các kênh hỗ trợ kiến trúc của bạn theo mặc định
conda install pip# you can now install any library you like with conda or pipconda install scikit-learn
pip install sktime
Bạn có thể muốn kiểm tra một số bài viết khác để cài đặt PyTorch và Tensorflow nguyên bản
Bạn sẽ nhanh chóng nhận thấy rằng không phải tất cả các phiên bản của thư viện Python đều có sẵn cho kiến trúc arm64. Ví dụ, nó có thể là phiên bản mới nhất của một thư viện [f. e. sktime] không khả dụng. Giả sử, nếu bạn cần ưu tiên sktime [hoặc một trong các tính năng của thư viện này] cho phân tích của mình, thì bạn có thể muốn sử dụng kiến trúc x86 thông qua Rosetta, mặc dù lợi thế về tốc độ của M1 có thể không tốt bằng phiên bản gốc
Trong trường hợp này, điều chúng ta cần làm là tạo một môi trường mới và đặt kiến trúc x86 làm mặc định. Chúng tôi sử dụng Terminal cho các lệnh sau
# you may want to install rosetta 2softwareupdate --install-rosetta# then create a new environment with alternate architectureCONDA_SUBDIR=osx-64 conda create --name your_intel_env_name
conda activate your_intel_env_name
conda env config vars set CONDA_SUBDIR=osx-64
Sau khi chạy ba lệnh này trên Terminal, bạn có thể kích hoạt môi trường này để cài đặt các gói không có nguồn gốc trong đó, như bình thường
conda install pip
pip install sktime
Có 2 cảnh báo cho điều này. Đầu tiên là bất kỳ gói mới nào mà bạn cài đặt sẽ cần một chút thời gian trong lần chạy đầu tiên để Rosetta biên dịch. Trong khi một số có thể cần vài giây hoặc vài phút, những người khác có thể cần hàng giờ. Tuy nhiên, sau khi bạn đã chạy một gói hoặc thư viện bằng Rosetta, thời gian biên dịch này sẽ không xuất hiện trong các lần chạy tập lệnh hoặc sổ ghi chép tiếp theo của bạn
Thông báo trước thứ hai là giải pháp trên không phải là giải pháp tương thích hoàn hảo. Không phải tất cả các phiên bản của gói sẽ có sẵn và chắc chắn bạn có thể gặp phải các vấn đề về tính tương thích và phụ thuộc. Cách tôi giải quyết vấn đề này là, cố gắng ưu tiên các thư viện chính mà bạn sẽ sử dụng trong tập lệnh, cài đặt chúng trước và loại bỏ những thư viện không cần thiết [nghe có vẻ hiển nhiên, nhưng bạn biết đấy…], tách tập lệnh/đối tượng/