Hiệu suất M1 Python

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

Sử dụng các thư viện không phải bản địa [x86, Intel] với Rosetta

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/

Máy Mac M1 có thể chạy Python không?

Tôi đã xem một số hướng dẫn khuyến nghị cài đặt các gói x86 [Intel], nhưng sẽ có một hình phạt về hiệu suất khi các chương trình x86 được Rosetta2 phiên dịch để hoạt động trên máy Mac M1. Thay vào đó, các hướng dẫn này sẽ giúp bạn có một môi trường Python khoa học đầy đủ chức năng hoạt động tự nhiên trên kiến ​​trúc M1 .

M1 có phù hợp để lập trình không?

MacBook Air [M1, 2020] . Nếu bạn là một lập trình viên với ngân sách eo hẹp hơn và không cần loại mã lực mà các MacBook khác cung cấp, thì MacBook Air [M1, 2020] vẫn là một lựa chọn tuyệt vời. The first two MacBooks above are great for programming on, but they are also very expensive. If you're a coder on a tighter budget who just does not need the kind of horsepower the other MacBooks offer, then the MacBook Air [M1, 2020] remains an excellent choice.

MacBook Air M1 có tốt cho việc học Python không?

Có, MacBook Air rất phù hợp với một số ngôn ngữ lập trình bao gồm cả Python .

M1 có tốt cho học máy không?

M1 là bước đột phá cho công nghệ máy học ở biên , với khả năng thực hiện 11 nghìn tỷ thao tác mỗi giây, đạt được hiệu suất học máy nhanh hơn tới 15 lần. Sử dụng công nghệ xử lý 5 nanomet tiên tiến, M1 được trang bị 16 tỷ bóng bán dẫn.

Chủ Đề