Hướng dẫn python libraries on m1 mac - thư viện python trên m1 mac

Tôi là một nhà khoa học dữ liệu và dự định mua một M1 Macbook, Air hoặc Pro mới, cho các tác phẩm khoa học dữ liệu của tôi nhưng có rất nhiều phản hồi đề cập rằng hầu hết các thư viện không được cấu hình cho ARM. Ngoài ra còn có một số người nói "M1 là quái thú học máy". Tôi chủ yếu sử dụng gấu trúc, tenorflow, scikitlearn, numpy, bình và cốt truyện cho các nghiên cứu của tôi.

Kinh nghiệm của bạn về việc sử dụng chip M1 với các thư viện Python là gì? Những thư viện bạn sử dụng hoàn hảo và cái nào không được hỗ trợ?

Có phải là một ý tưởng tốt để mua M1 cho khoa học dữ liệu hay tốt hơn là chờ đợi?

Chào mọi người !

Vừa nhận được một Mac M1 hoàn toàn mới (MacOS Monterey 12.4) với Chip Apple.

Tôi đã cố gắng cài đặt một số gói Python bằng PIP, luôn luôn thất bại khi gói cần được biên dịch. Ví dụ: chạy "Cài đặt pip Python-Rapidjson" Không thất bại với thông báo lỗi: "Lỗi: Bánh xe xây dựng không thành công cho Python-Rapidjson". Ngoài ra, có rất nhiều cảnh báo, chẳng hạn như "CẢNH BÁO

Tôi đã thử các bước sau:

  1. Cài đặt lại GCC.
  2. Cài đặt lại Xcode và cập nhật lên phiên bản cuối cùng (phiên bản Clang 13.1.6).
  3. Cập nhật mọi thứ được cài đặt bằng cách sử dụng bia.

Tình yêu cho sự giúp đỡ của bạn, Eylon

Cập nhật lần cuối vào ngày 8 tháng 7, 20222 phút đọc 2 min read

Hướng dẫn python libraries on m1 mac - thư viện python trên m1 mac

Các bộ xử lý Mac M1 mới khá tuyệt và đủ để chuyển đổi người dùng Linux kỳ cựu này thành Mac. Vì Mac M1, M2, v.v. đều dựa trên cánh tay, có một số khác biệt cần nhận thức được khi cài đặt môi trường Python của bạn. Một số hướng dẫn tôi đã thấy đã đề xuất cài đặt các gói x86 (Intel), nhưng có một hình phạt hiệu suất khi các chương trình X86 được Rosetta2 giải thích để hoạt động trên M1 Macs. 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 đủ hoạt động tự nhiên trên kiến ​​trúc M1.

Chúng tôi sẽ sử dụng condabrew để cài đặt các gói:

  1. Tải xuống và cài đặt phiên bản Pygplate mới nhất tương ứng với kiến ​​trúc hệ thống của bạn (Mac M1 Arm) và lưu ý thư mục cài đặt và đường dẫn Python.
  2. Cài đặt Conda (chúng tôi đề xuất Miniforge) và tạo một môi trường mới, ví dụ: conda create -n pygplates python=3.9.
  3. Kích hoạt môi trường Python mới của bạn với conda activate pygplates
  4. Một số gói yêu cầu phụ thuộc bổ sung như trình biên dịch và thư viện ánh xạ bên ngoài Conda (Tôi đã nhìn vào bạn GDAL!) Để thực hiện cài đặt homebrew này, sau đó chạy brew install qt5 gcc gdal cgal.
  5. Sau đó, bạn sẽ có thể cài đặt các gói Python của mình: conda install numpy scipy netcdf4 geopandas pandas cartopy jupyter rasterio conda-build
  6. Liên kết với cài đặt Pygplate của bạn bằng đường dẫn Python bạn đã viết ra ở bước 1. Trong trường hợp của tôi conda develop /Users/ben/Downloads/pygplates_0.35.0_py39_Darwin-arm64
  7. Cài đặt bất kỳ phụ thuộc bổ sung nào (mà don lồng có một diễn đàn Conda) bằng PIP:
                            
                                conda install conda-forge::tensorflow
                            
                        
    0.

Bây giờ bạn nên có một cài đặt pygplate hoạt động với các phụ thuộc bổ sung cần thiết cho các ứng dụng Python khoa học! Chi tiết bổ sung về cài đặt

                        
                            conda install conda-forge::tensorflow
                        
                    
1 có thể được tìm thấy ở đây. Một gói Conda cho pygplate đang được phát triển.

Một bản tóm tắt của tất cả các lệnh dưới đây. Mã hóa hạnh phúc!

conda create -n pygplates python=3.9
conda activate pygplates
brew install qt5 gcc gdal cgal
conda install numpy scipy netcdf4 geopandas pandas cartopy jupyter rasterio conda-build
conda develop /Users/ben/Downloads/pygplates_0.35.0_py39_Darwin-arm64
pip install PlateTectonicTools

Ngay cả khi bạn không phải là người dùng Mac, có khả năng bạn đã nghe Apple chuyển từ CPU Intel sang CPU tùy chỉnh của riêng họ, mà họ gọi chung là "Apple Silicon". Lần cuối cùng Apple thay đổi kiến ​​trúc máy tính của mình một cách đáng kể là 15 năm trước khi họ chuyển từ PowerPC sang CPU Intel. Kết quả là, phần lớn đã được viết trong báo chí công nghệ về ý nghĩa của quá trình chuyển đổi đối với người dùng Mac, nhưng hiếm khi từ quan điểm của nhà khoa học dữ liệu Python. Trong bài đăng này, tôi sẽ phá vỡ ý nghĩa của người dùng Apple silicon đối với người dùng Python, đặc biệt là những người làm máy tính khoa học và khoa học dữ liệu: những gì hoạt động, những gì không và nơi này có thể sẽ diễn ra.

Điều gì thay đổi về Mac?

Nói tóm lại, Apple đang chuyển đổi toàn bộ dòng máy tính xách tay và máy tính để bàn của họ từ việc sử dụng CPU Intel sang sử dụng CPU của thiết kế riêng của Apple Apple. Apple đã là một nhà thiết kế CPU trong gần một thập kỷ (kể từ khi phát hành iPhone 5 vào năm 2012), nhưng cho đến cuối năm 2020, CPU của họ chỉ được sử dụng trong các thiết bị di động như iPhone và iPad. Sau rất nhiều lần lặp lại, các nhà quan sát công nghệ đã trở nên rõ ràng rằng CPU của Apple, đặc biệt là trong iPad Pro, đã trở nên cạnh tranh hiệu suất với CPU máy tính xách tay Intel công suất thấp. Vì vậy, không có gì ngạc nhiên khi Apple công bố tại hội nghị nhà phát triển của họ vào năm 2020 rằng họ sẽ chuyển toàn bộ dòng sản phẩm Mac sang CPU của riêng họ trong hai năm tới. Như đã hứa, Apple đã phát hành Mac Silicon đầu tiên vào tháng 11 năm 2020. Họ bao gồm một chiếc MacBook Air, một chiếc MacBook Pro 13 13 và Mac mini trông giống hệt với mẫu trước đó nhưng chứa CPU của Apple M1 thay vì CPU Intel. Vào tháng 4 năm 2021, họ đã thêm M1 vào iMac và iPad Pro.

Vì vậy, những gì tốt hơn về những CPU của Apple? Dựa trên nhiều đánh giá chuyên nghiệp (cũng như thử nghiệm của chúng tôi tại Anaconda), lợi ích chính của M1 là hiệu suất duy nhất tuyệt vời và thời lượng pin được cải thiện cho máy tính xách tay. Điều quan trọng cần lưu ý là điểm chuẩn là một chủ đề khó khăn, và có những quan điểm khác nhau về chính xác M1 nhanh như thế nào. Một mặt, điều gì có thể khách quan hơn so với việc đo lường hiệu suất định lượng? Mặt khác, điểm chuẩn cũng là chủ quan, vì người đánh giá phải quyết định khối lượng công việc nào cần kiểm tra và cấu hình phần cứng và phần mềm cơ bản nào để so sánh với. Tuy nhiên, chúng tôi khá tự tin rằng M1 thường nhanh hơn đối với một người dùng điển hình của người dùng (không nhất thiết phải là một người dùng khoa học dữ liệu của người dùng) khối lượng công việc so với các máy Mac Intel trước đây trong khi đồng thời sử dụng ít năng lượng hơn.

Từ góc độ kiến ​​trúc CPU, M1 có bốn sự khác biệt đáng kể so với CPU Intel trước đó:

  • Kiến trúc CPU thay đổi từ x86 sang ARM

  • Apple hiện thiết kế GPU trên chip (chứ không phải là GPU trên chip từ Intel hoặc chip GPU riêng biệt từ NVIDIA hoặc AMD)

  • Máy gia tốc Apple tùy chỉnh từ iPhone và iPad chip hiện có sẵn trên Mac, chẳng hạn như động cơ thần kinh Apple (ANE)

  • RAM hệ thống được hàn trực tiếp vào gói CPU và được chia sẻ bởi CPU, GPU và lõi ANE.

Chúng tôi sẽ chạm vào tác động của những thay đổi này nhiều hơn trong các phần sau.

Bộ hướng dẫn, ARM và Khả năng tương thích x86

Là người dùng phần mềm và người sáng tạo, câu hỏi đầu tiên của chúng tôi về Apple Silicon là: Tôi có cần thay đổi bất cứ điều gì để phần mềm của mình tiếp tục hoạt động không? Câu trả lời là: Có, nhưng ít hơn bạn nghĩ.

Để giải thích về điều đó, chúng ta cần đi sâu vào các kiến ​​trúc tập hợp (ISAS). Một ISA là một đặc điểm kỹ thuật cho cách một gia đình chip hoạt động ở mức thấp, bao gồm cả bộ hướng dẫn mà mã máy phải sử dụng. Các ứng dụng và thư viện được biên dịch cho một ISA (và hệ điều hành) cụ thể và sẽ không trực tiếp chạy trên CPU với ISA khác trừ khi được biên dịch lại. Đây là lý do tại sao Anaconda có các trình cài đặt và tệp gói khác nhau cho mọi nền tảng chúng tôi hỗ trợ.

Intel CPU hỗ trợ X86-64 ISA (đôi khi còn được gọi là AMD64 vì AMD ban đầu đề xuất phần mở rộng 64 bit này cho X86 vào năm 1999). CPU Silicon mới sử dụng một ISA được thiết kế bởi ARM có tên AARCH64, giống như CPU ​​iPhone và iPad mà họ xuất hiện. Vì lý do này, những máy Mac mới này thường được gọi là Mac ARM Mac, trái ngược với Mac Intel Mac, mặc dù ARM chỉ xác định ISA được sử dụng bởi Apple M1 nhưng không thiết kế CPU. Nói chung, các quy ước đặt tên cho các kiến ​​trúc cánh tay 64 bit đang khó hiểu, vì những người khác nhau sẽ sử dụng các thuật ngữ khác nhau một cách tinh tế cho cùng một điều. Bạn có thể thấy một số người gọi các CPU ARM64 này (đó là những gì Apple làm trong các công cụ phát triển của họ) hoặc hơi không chính xác như là Arm Armv8 (là một đặc điểm kỹ thuật mô tả cả AARCH64 và AARCH32). Ngay cả trong Conda, bạn sẽ thấy các tên nền tảng OSX-ARM64, mà bạn sẽ sử dụng cho các macOS chạy trên M1 và Linux-Aarch64, mà bạn sẽ sử dụng cho Linux chạy trên CPU ARM 64 bit. Chúng tôi sẽ sử dụng các loại Arm Arm64 cho phần còn lại của bài đăng này vì nó ngắn hơn so với Apple Apple silicon và ít cồng kềnh hơn so với Aarch64.

Người đọc quan sát sẽ lưu ý rằng khả năng tương thích của ISA chỉ quan trọng đối với mã được biên dịch, phải được dịch sang mã máy để chạy. Python là một ngôn ngữ được giải thích, vì vậy phần mềm được viết bằng Pure Python không cần phải thay đổi giữa Intel và Arm Mac. Tuy nhiên, bản thân trình thông dịch Python là một chương trình được biên dịch và nhiều thư viện khoa học dữ liệu Python (như Numpy, Pandas, Tensorflow, Pytorch, v.v.) cũng chứa mã được biên dịch. Tất cả các gói đó đều cần được biên dịch lại trên MacOS cho CPU ARM64 để chạy tự nhiên trên các máy Mac dựa trên M1 mới.

Tuy nhiên, Apple cũng có một giải pháp cho điều đó. Tái chế tên Ros Ros Rosetta từ Trình giả lập PowerPC của họ, Apple bao gồm một thành phần hệ thống trong MacOS 11 có tên Rosetta2. Rosetta2 cho phép các ứng dụng và thư viện X86-64 chạy trên MAC ARM64 không thay đổi. Một sự thật thú vị về Rosetta2 là nó là một người dịch X86-64 đến Arm64, không phải là một trình giả lập. Khi bạn chạy một chương trình X86-64 (hoặc tải thư viện được biên dịch) lần đầu tiên, Rosetta2 phân tích mã máy và tạo mã máy Arm64 tương đương. Điều này làm cho một độ trễ trả trước nhẹ khi bạn bắt đầu ứng dụng X86-64, nhưng mã máy được dịch cũng được lưu trữ vào đĩa, vì vậy các lần chạy tiếp theo sẽ bắt đầu nhanh hơn. Điều này trái ngược với một trình giả lập (như QEMU) mô phỏng hành vi và trạng thái của CPU trong phần mềm, hướng dẫn theo hướng dẫn. Mô phỏng thường chậm hơn nhiều so với chạy nhị phân được dịch, nhưng có thể khó dịch từ ISA này sang ISA khác và có mã vẫn chạy chính xác và hiệu quả, đặc biệt là khi xử lý tính nhất quán đa luồng và bộ nhớ.

Apple chưa tiết lộ chính xác làm thế nào họ có thể tạo mã máy Arm64 từ các nhị phân x86-64 với hiệu suất tốt, nhưng có những lý thuyết họ đã thiết kế M1 với các khả năng phần cứng bổ sung để cho phép nó bắt chước một số hành vi của chip x86-64 khi Chạy mã dịch. Kết quả ròng là hầu hết mọi người đều thấy hình phạt hiệu suất 20-30% khi chạy các chương trình X86-64 với Rosetta2 so với ARM64 bản địa. Đó là một sự đánh đổi khá hợp lý cho khả năng tương thích cho đến khi việc lựa chọn phần mềm do ARM64 bắt kịp.

Tuy nhiên, có một sự đánh bắt, đặc biệt đối với người dùng các gói điện toán số trong Python. X86-64 ISA không phải là một đặc điểm kỹ thuật đông lạnh, nhưng một Intel đã phát triển đáng kể theo thời gian, thêm các hướng dẫn chuyên dụng mới cho các khối lượng công việc khác nhau. Cụ thể, trong 10 năm qua, Intel và AMD đã đưa ra hỗ trợ cho các hướng dẫn vector, hoạt động đồng thời trên nhiều phần dữ liệu. Cụ thể, các bổ sung này vào tập lệnh x86-64 là AVX, AVX2 và AVX-512 (bản thân nó có các biến thể khác nhau). Như bạn có thể tưởng tượng, các hướng dẫn này có thể tiện dụng khi làm việc với dữ liệu mảng và một số thư viện đã áp dụng chúng khi biên dịch các nhị phân cho x86-64. Vấn đề là Rosetta2 không hỗ trợ bất kỳ gia đình hướng dẫn AVX nào và sẽ tạo ra lỗi hướng dẫn bất hợp pháp nếu nhị phân của bạn cố gắng sử dụng chúng. Do sự tồn tại của các CPU Intel khác nhau với các khả năng AVX khác nhau, nhiều chương trình đã có thể chọn động giữa các đường dẫn mã AVX, AVX2, AVX-512 và không AVX, phát hiện các khả năng CPU khi chạy. Các chương trình này sẽ hoạt động tốt theo Rosetta2 vì các khả năng của CPU được báo cáo cho các quy trình chạy theo Rosetta2 không bao gồm AVX. Tuy nhiên, giả sử một ứng dụng hoặc thư viện không có khả năng chọn các đường dẫn mã không AVX khi chạy. Trong trường hợp đó, nó sẽ không hoạt động theo Rosetta2 nếu Packager giả định CPU sẽ có hỗ trợ AVX khi họ biên dịch thư viện. Ví dụ, bánh xe Tensorflow không hoạt động dưới Rosetta2 trên M1. Ngoài ra, ngay cả khi một chương trình hoạt động theo Rosetta2, không có một cái gì đó như AVX làm cho M1 chậm hơn trong việc thực hiện một số loại xử lý mảng nhất định. .

Nhận các gói Python cho M1

Hiện tại có ba tùy chọn để chạy Python trên M1:

  1. Sử dụng PyenV để tạo môi trường và PIP để cài đặt bánh xe MacOS Arm64 gốc hoặc xây dựng các gói từ nguồn.

  2. Sử dụng phân phối Python X86-64, như Anaconda hoặc Conda-Forge, với Rosetta2.

  3. Sử dụng phân phối ARM64 của Conda-Forge MacOS ARM64.

Tùy chọn đầu tiên hiện đang thách thức vì rất ít dự án Python đã tải lên bánh xe ARM64 bản địa cho các macOS. Nhiều dự án Python sử dụng các dịch vụ tích hợp liên tục miễn phí (như Azure Pipelines hoặc GitHub Action) để xây dựng bánh xe nhị phân và các dịch vụ này chưa có sẵn máy Mac M1. Nếu bạn cố gắng cài đặt gói mà không có bánh xe, PIP sẽ cố gắng xây dựng gói từ đầu, có thể hoặc không hoạt động tùy thuộc vào việc bạn có các trình biên dịch thích hợp và các phụ thuộc bên ngoài khác có sẵn hay không.

Tùy chọn thứ hai cung cấp phạm vi rộng nhất của các gói, mặc dù không phải là tùy chọn nhanh nhất. Bạn có thể tải xuống Trình cài đặt MacOS X86-64 cho Anaconda (hoặc Conda-Forge) và cài đặt nó trên M1 Mac và mọi thứ sẽ hoạt động. Bạn sẽ thấy một cảnh báo từ trình cài đặt rằng kiến ​​trúc của người Viking dường như không phải là 64 bit, nhưng bạn có thể bỏ qua cảnh báo đó một cách an toàn. Khi chạy các ứng dụng Python, bạn có thể nhận thấy tạm dừng (đôi khi dài!) Khi bắt đầu Python hoặc nhập gói lần đầu tiên, vì Rosetta2 dịch mã máy từ x86-64 sang ARM64. Tuy nhiên, khoảng dừng đó sẽ biến mất trên các lần chạy tiếp theo. Hạn chế chính là các gói yêu cầu AVX sẽ không chạy. Ví dụ, bánh xe Tensorflow 2.4 được cài đặt bởi PIP sẽ thất bại (do cách xây dựng), tuy nhiên, gói TensorFlow 2.4 từ Conda-Forge sẽ hoạt động. Bạn có thể cài đặt nó vào môi trường Conda của mình bằng lệnh:

                        
                            conda install conda-forge::tensorflow
                        
                    

Tùy chọn thứ ba là sử dụng phân phối ống dẫn thử nghiệm được xây dựng cho MacOS Arm64. Nhóm Conda-Forge sử dụng một kỹ thuật gọi là biên dịch chéo, để xây dựng các nhị phân MacOS Arm64 với cơ sở hạ tầng tích hợp liên tục MacOS X86-64 hiện có. Đây là một cách giải quyết tuyệt vời khi không có quyền truy cập vào phần cứng M1 Mac nhưng có nhược điểm là hệ thống xây dựng không thể kiểm tra các gói vì không có CPU M1 để chạy. Tuy nhiên, các gói mà chúng tôi đã thử nghiệm dường như hoạt động tốt. Nếu bạn muốn dùng thử Miniforge cho OSX-ARM64:

  • Truy cập trang Tải xuống Miniforge và tải xuống Trình cài đặt OSX Arm64.

  • Thực hiện theo các hướng dẫn cài đặt

Nhiều gói OSX Arm64 phổ biến có sẵn từ Conda-Forge, bao gồm Pytorch, Tensorflow (chỉ dành cho Python 3,8 tại thời điểm này), Scikit-Learn và Pandas.

Chúng tôi đang trong quá trình thêm MacOS Arm64 làm nền tảng hỗ trợ Anaconda. Các gói này sẽ được xây dựng và thử nghiệm trên máy Mac M1. Những aren này có sẵn, nhưng hãy theo dõi!

Các lõi hiệu quả của M1 là như thế nào được sử dụng bởi Python?

Mặc dù đôi khi được gọi là CPU 8 lõi, M1 được mô tả tốt nhất là CPU lõi 4+4. Có 4 lõi hiệu suất cao của người Viking (đôi khi được gọi là lõi p lõi trong tài liệu của Apple) và 4 lõi hiệu quả cao (đôi khi được gọi là lõi của E E). Các lõi P cung cấp phần lớn thông lượng xử lý của CPU và tiêu thụ phần lớn sức mạnh. Các lõi E là một thiết kế khác với các lõi P, giao dịch hiệu suất tối đa cho mức tiêu thụ điện năng thấp hơn. Mặc dù nó là bất thường đối với các chip máy tính để bàn và máy tính xách tay có hai lõi khác nhau, điều này là phổ biến trong CPU di động. Các quy trình nền và các nhiệm vụ tính toán ưu tiên thấp có thể thực hiện trên các lõi điện tử, bảo tồn năng lượng và kéo dài thời lượng pin. Apple cung cấp API để thiết lập chất lượng dịch vụ của người dùng cho các chủ đề và tác vụ, điều này ảnh hưởng đến việc chúng được hệ điều hành giao cho liệu chúng được chỉ định cho P hay E Cores.

Tuy nhiên, Python không sử dụng bất kỳ API đặc biệt nào trong số này, vậy điều gì xảy ra khi sử dụng nhiều luồng hoặc quy trình trong ứng dụng của bạn? Python báo cáo số lượng CPU Core là 8, vì vậy nếu bạn khởi chạy 8 quy trình công nhân, một nửa trong số đó sẽ chạy trên lõi E chậm hơn. Nếu bạn chạy ít hơn 8, HĐH dường như thích chạy chúng trên lõi P. Để giúp định lượng điều này, chúng tôi đã tạo ra một microbenchmark đơn giản trong đó chúng tôi đã tạo ra một hàm tính toán cosine rất nhiều:

                        
                            import math
 
def waste_time(_):
    n = 1000000
    for i in range(n):
        math.cos(0.25)
                        
                    

Và sau đó đã chạy nhiều bản sao của nó trong một đa xử lý.pool với số lượng quy trình khác nhau, tính toán thông lượng. Kết quả được hiển thị trong cốt truyện này:

Hướng dẫn python libraries on m1 mac - thư viện python trên m1 mac

Thông lượng (đơn vị làm việc/thứ hai) và quy trình kích thước nhóm.

Hành vi phù hợp với bộ lập lịch hệ điều hành gán các quy trình công nhân cho các lõi hiệu suất khi có bốn hoặc ít hơn các quy trình. Khi nhóm quy trình tăng lên bốn lần, sự gia tăng thông lượng trên mỗi lõi đã giảm cho đến khi chúng tôi đạt được tám quy trình, cho thấy các lõi E chậm hơn được sử dụng cho các quy trình bổ sung. Cuối cùng, không có tài nguyên CPU bổ sung nào để tận dụng tám quy trình vừa qua, và hiện đang lập lịch trình và tranh chấp bộ nhớ dẫn đến một thông lượng khác nhau nhưng không cải tiến. Ngoài ra, thú vị cần lưu ý rằng đối với tổng thông lượng cực đại của M1 (trong thử nghiệm này), 75% thông lượng được cung cấp bởi các lõi P và 25% được cung cấp bởi các lõi E. Đó là một đóng góp không tầm thường từ các lõi điện tử, vì vậy bạn nên sử dụng chúng nếu bạn có thể, và hệ thống phân phối công việc của bạn có thể xử lý các nhiệm vụ có thể mất nhiều thời gian khác nhau giữa các công nhân. . Trên CPU Intel. Tuy nhiên, hai tính năng là hoàn toàn khác nhau.

Điều gì về Linux và Windows trên M1?

Mặc dù Apple đã nói rằng họ sẽ không ngăn người dùng chạy các hệ điều hành khác trên phần cứng M1, nhưng hiện tại không có Camp Boot tương đương với việc khởi động kép Mac Mac đến Linux hoặc Windows và nỗ lực để Port Linux chạy trên phần cứng M1 vẫn còn thử nghiệm cao. Tuy nhiên, có (theo văn bản này) hai cách để chạy Linux trên M1:

  • Docker Desktop

  • Parallels Desktop cho Mac

Trong cả hai trường hợp, bạn cần chạy phân phối Linux được biên dịch cho ARM64, nhưng chúng có sẵn vì Linux đã được sử dụng trên các hệ thống ARM trong một thời gian dài. Chúng tôi đã tìm thấy Docker trên M1 rất đơn giản và M1 Mac Mini là một lựa chọn tuyệt vời cho các hệ thống tích hợp liên tục cần kiểm tra phần mềm Linux Arm64, thay vì sử dụng các máy tính bảng đơn công suất thấp như Raspberry Pi và NVIDIA Jetson. Ví dụ, bộ thử nghiệm đơn vị mở rộng Numba, chạy nhanh hơn 7 lần trong Docker trên M1 Mac Mini của chúng tôi so với Raspberry Pi 4 chạy Ubuntu Linux. (Lưu ý rằng chúng tôi chưa tìm ra cách để chạy các bản phân phối Linux 32 bit trên M1.)

Parallels Desktop hiện cũng có thể chạy cổng Windows Arm64, nhưng phần mềm Windows cho ARM không phổ biến như phần mềm Linux. Bản thân Windows chỉ có sẵn cho ARM thông qua chương trình Windows Insider và gần như tất cả các phần mềm mà một nhà khoa học dữ liệu có thể sử dụng đều có sẵn cho Linux.

Những ưu và nhược điểm của các nhà khoa học dữ liệu là gì?

Những lợi ích lớn nhất đối với M1 cho một nhà khoa học dữ liệu về cơ bản giống như đối với người dùng thông thường:

  • Hiệu suất chủ đề đơn cao

  • Thời lượng pin tuyệt vời (cho máy tính xách tay)

Các máy Mac M1 không cung cấp bất cứ thứ gì mang lại lợi ích cụ thể cho các nhà khoa học, nhưng điều đó có thể sẽ đến (xem phần tiếp theo).

Tuy nhiên, M1 hiện đang nhắm vào các thiết bị công suất thấp nhất trong dòng Apple, mang lại cho nó một số nhược điểm:

  • Chỉ có bốn lõi CPU hiệu suất cao: nhiều thư viện khoa học dữ liệu (như Tensorflow, Pytorch và Dask) được hưởng lợi từ các lõi CPU nhiều hơn, vì vậy chỉ có bốn là một nhược điểm.

  • Tối đa 16 GB RAM: Nhiều bộ nhớ luôn hữu ích khi làm việc với các bộ dữ liệu lớn hơn và 16 GB có thể không đủ cho một số trường hợp sử dụng.

  • Hỗ trợ tối thiểu cho GPU và ANE trong hệ sinh thái khoa học dữ liệu Python: Sự tích hợp chặt chẽ giữa tất cả các đơn vị tính toán khác nhau và hệ thống bộ nhớ trên M1 có khả năng rất có lợi. Tuy nhiên, tại thời điểm này, thư viện Python không phải là alpha duy nhất có thể sử dụng GPU M1 hoặc ANE là coremltools, chỉ tăng tốc suy luận mô hình.

  • Tính khả dụng của gói ARM64: Sẽ mất thời gian để hệ sinh thái Pydata bắt kịp và liên tục vận chuyển bánh xe Python cho ARM64 MAC, và có khả năng sẽ có những khoảng trống. Chạy theo Rosetta2 có thể là lựa chọn tốt hơn, miễn là bạn có thể tránh các gói yêu cầu AVX và giành được chạy.

So với các máy Mac Intel hiện tại, các giới hạn số lượng CPU Core và RAM rất đáng kể, mặc dù M1 rất hiệu quả với các tài nguyên mà nó có.

Những gì trên đường chân trời?

Nhiều nhược điểm hiện tại đối với M1 chỉ đơn giản là do CPU đầu tiên trong dòng MAC dựa trên ARM64 mới. Để chuyển đổi các máy Mac hiệu suất cao hơn (đặc biệt là Mac Pro) sang kiến ​​trúc mới này, Apple sẽ cần phát hành các hệ thống với nhiều lõi CPU hơn và nhiều bộ nhớ hơn. Đồng thời, hệ sinh thái của nhà phát triển Python sẽ bắt kịp, và nhiều bánh xe và gói ARM64 gốc sẽ có sẵn.

Nhưng sự phát triển thú vị nhất sẽ là khi các thư viện học máy có thể bắt đầu tận dụng các lõi GPU và động cơ thần kinh mới trên Apple Silicon. Apple cung cấp các API như tính toán kim loại và ML có thể tăng tốc các tác vụ học máy, nhưng chúng không được sử dụng rộng rãi trong hệ sinh thái Python. Apple có một cổng Alpha của Tensorflow sử dụng ML tính toán và có thể các dự án khác sẽ có thể tận dụng khả năng tăng tốc phần cứng của Apple trong những năm tới.

Vượt ra ngoài Apple, M1 cho thấy những gì một bộ xử lý ARM lớp máy tính để bàn có thể làm, vì vậy hy vọng, chúng ta sẽ thấy sự cạnh tranh từ các nhà sản xuất CPU ARM khác trong thị trường này. Ví dụ, CPU ARM lớp M1 từ một nhà sản xuất khác chạy Linux với GPU NVIDIA cũng có thể là một máy trạm khoa học dữ liệu di động ấn tượng.

Sự kết luận

Mac M1 là một cơ hội thú vị để xem CPU ARM64 của máy tính xách tay/máy tính để bàn có thể đạt được. Đối với việc sử dụng chung, hiệu suất là tuyệt vời, nhưng các hệ thống này không nhắm đến người dùng khoa học dữ liệu và máy tính khoa học. Nếu bạn muốn M1 vì những lý do khác và dự định thực hiện một số khoa học dữ liệu nhẹ, chúng hoàn toàn đầy đủ. Để sử dụng mạnh hơn, bạn sẽ muốn gắn bó với Intel Mac, nhưng hãy chú ý đến cả sự phát triển phần mềm vì khả năng tương thích được cải thiện và phần cứng MAC ARM64 trong tương lai, có khả năng sẽ loại bỏ một số ràng buộc mà chúng ta thấy ngày nay.

Python có hoạt động trên Mac M1 không?

Một số hướng dẫn tôi đã thấy đã đề xuất cài đặt các gói x86 (Intel), nhưng có một hình phạt hiệu suất khi các chương trình X86 được Rosetta2 giải thích để hoạt động trên M1 Macs. 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 đủ hoạt động tự nhiên trên kiến ​​trúc M1.these instructions will get you a fully functioning scientific Python environment working natively on M1 architecture.

Anaconda có tốt cho Mac M1 không?

Tất cả các gói có trong trình cài đặt đã được biên dịch để hỗ trợ ARM64, có nghĩa là người dùng M1 giờ đây có thể tận hưởng hiệu quả tính toán của M1S và tăng tốc độ công việc lên 20%.M1 users can now enjoy the computing efficiency of M1s and speed up workflows by 20%.

Pycharm có sẵn cho M1 Mac không?

Gần đây tôi đã có M1 MacBook Pro mới, người có bộ xử lý nội bộ mới dẫn đến một số ứng dụng không hoạt động, Pycharm là một trong số đó.Để khắc phục sự cố, tôi đã thực hiện như sau: 1) đã cài đặt phiên bản pycharm mới nhất, vâng, có một phiên bản silicon của Apple, vì vậy hãy tải xuống và cài đặt nó.yes there is an apple silicon version available, so pls download and install that.

MacBook Air M1 có tốt cho Python không?

Có, MacBook Air là tuyệt vời cho một số ngôn ngữ lập trình bao gồm Python..

M1 Mac có hỗ trợ Tensorflow không?

Tôi đã cố gắng chạy PIP Cài đặt Tensorflow-Macos và nó đã thành công.Tôi đã đọc từ "Công trình cho M1 Too" bài viết đã đề cập "Fork of Tensorflow của Apple được gọi là Tensorflow-Macos" mặc dù tôi không thể tìm thấy nhiều thông tin về điều đó.Apple's fork of TensorFlow is called tensorflow-macos" although I can't find much information about that.