Python có hoạt động trên mac m1 không?

Bộ xử lý Mac M1 mới khá tuyệt và đủ để chuyển đổi người dùng Linux kỳ cựu này sang Mac. Kể từ Mac M1, M2, v.v. đều dựa trên ARM, có một số điểm khác biệt cần lưu ý khi cài đặt môi trường Python của bạn. Một số hướng dẫn tôi đã xem đã khuyến nghị cài đặt các gói x86 [Intel], nhưng có một hình phạt về hiệu suất khi các chương trình x86 được Rosetta2 diễn giải để hoạt động trên máy Mac M1. Thay vào đó, những 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

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 pygplates 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 khuyên dùng miniforge] và tạo môi trường mới e. g. 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 các 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 đang xem bạn GDAL. ] Để thực hiện việc này, hãy cài đặt homebrew, 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 đến bản cài đặt pygplates của bạn bằng đường dẫn python bạn đã viết ở 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 [không có công thức conda] bằng cách sử dụng pip. pip install PlateTectonicTools

Bây giờ bạn sẽ có bản cài đặt pyGPlates đang 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

                        
                            import math
 
def waste_time[_]:
    n = 1000000
    for i in range[n]:
        math.cos[0.25]
                        
                    
0 có thể được tìm thấy ở đây. Gói conda cho pyGPlates đang được phát triển

Dành cho người thực hànhHướng dẫn của nhà khoa học dữ liệu Python về quá trình chuyển đổi Apple SiliconNgày 15 tháng 7 năm 2021Tác giả Stanley Seibert

Ngay cả khi bạn không phải là người dùng Mac, bạn có thể đã nghe nói Apple đang 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 cấu trúc máy tính của mình một cách đột ngột như vậy là 15 năm trước khi họ chuyển từ PowerPC sang CPU Intel. Do đó, báo chí công nghệ đã viết nhiều 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ân tích ý nghĩa của Apple Silicon đối với người dùng Python ngày nay, đặc biệt là những người làm khoa học máy tính và khoa học dữ liệu. cái gì hiệu quả, cái gì không, và cái này có thể dẫn đến đâu

Điều gì đang thay đổi về máy Mac?

Tóm lại, Apple đang chuyển toàn bộ dòng máy tính xách tay và máy tính để bàn của họ từ sử dụng CPU Intel sang sử dụng CPU do chính Apple thiết kế. Apple đã là 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 đi lặp lại, các nhà quan sát công nghệ thấy rõ rằng CPU của Apple, đặc biệt là trong iPad Pro, đã trở nên cạnh tranh về 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 tuyên 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 những chiếc Mac Silicon đầu tiên vào tháng 11 năm 2020. Chúng bao gồm MacBook Air, MacBook Pro 13 inch và Mac Mini trông giống hệt với mẫu trước đó nhưng chứa CPU 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ậy những CPU Apple này có gì tốt hơn? . Điều quan trọng cần lưu ý là đo điểm chuẩn là một chủ đề phức tạp và có nhiều quan điểm khác nhau về tốc độ chính xác của M1. Một mặt, điều gì có thể khách quan hơn việc đo lường hiệu suất một cách định lượng? . Tuy nhiên, chúng tôi khá tự tin rằng M1 thường nhanh hơn đối với khối lượng công việc đối với “người dùng thông thường” [không nhất thiết là “người dùng khoa học dữ liệu”] so với các máy Mac Intel trước đây đồ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 điểm khác biệt đáng kể so với các CPU Intel trước đây.

  • 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 GPU trên chip của Intel hoặc chip GPU riêng biệt của NVIDIA hoặc AMD]

  • Các bộ tăng tốc tùy chỉnh của Apple từ chip iPhone và iPad hiện đã có trên Mac, chẳng hạn như Apple Neural Engine [ANE]

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

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

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

Với tư cách là người dùng và người sáng tạo phần mềm, 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 tôi tiếp tục hoạt động không? . 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 kiến ​​trúc tập lệnh [ISA]. ISA là một đặc điểm kỹ thuật về cách thức hoạt động của một họ chip ở mức thấp, bao gồm tập lệnh 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 cụ thể [và hệ điều hành] và sẽ không chạy trực tiếp trên CPU với một ISA khác trừ khi được biên dịch lại. Đây là lý do Anaconda có các trình cài đặt và tệp gói khác nhau cho mọi nền tảng mà chúng tôi hỗ trợ

CPU Intel hỗ trợ ISA x86-64 [đô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]. Các CPU Apple Silicon mới sử dụng ISA do ARM thiết kế có tên là AArch64, giống như các CPU iPhone và iPad mà chúng có nguồn gốc từ. Vì lý do này, những máy Mac mới này thường được gọi là "ARM Mac" trái ngược với "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 kiến ​​trúc ARM 64-bit gây nhầm lẫn, 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 vi cho cùng một thứ. Bạn có thể thấy một số người gọi các CPU này là “ARM64” [đó là những gì Apple làm trong các công cụ dành cho nhà phát triển của họ] hoặc hơi không chính xác là “ARMv8” [là thông số kỹ thuật mô tả cả AArch64 và AArch32]. Ngay cả trong conda, bạn sẽ thấy tên nền tảng osx-arm64 mà bạn sẽ sử dụng cho 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 “ARM64” cho phần còn lại của bài đăng này vì nó ngắn hơn “Apple Silicon” và ít rườm rà hơn “AArch64. ”

Người đọc tinh ý 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, mã này 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 Python thuần túy không cần phải thay đổi giữa máy Mac Intel và ARM. 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 đó cần được biên dịch lại trên macOS cho CPU ARM64 để chạy tự nhiên trên 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 “Rosetta” từ trình giả lập PowerPC của họ, Apple đưa một thành phần hệ thống vào 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 máy Mac ARM64 không thay đổi. Một sự thật thú vị về Rosetta2 là nó là trình dịch x86-64 sang ARM64, không phải trình giả lập. Khi bạn chạy chương trình x86-64 [hoặc tải thư viện đã biên dịch] lần đầu tiên, Rosetta2 sẽ phân tích mã máy và tạo mã máy ARM64 tương đương. Điều này gây ra một chút chậm trễ trước khi bạn khởi động ứng dụng x86-64 lần đầu tiên, nhưng mã máy đã dịch cũng được lưu vào bộ đệm ẩn 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 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 bằng hướng dẫn. Mô phỏng nói chung chậm hơn nhiều so với chạy mã nhị phân đã dịch, nhưng có thể khó dịch từ ISA này sang ISA khác mà mã vẫn chạy chính xác và hiệu quả, đặc biệt là khi xử lý đa luồng và tính nhất quán của bộ nhớ

Apple đã không tiết lộ chính xác cách họ có thể tạo mã máy ARM64 từ các tệp nhị phân x86-64 với hiệu suất tốt, nhưng có giả thuyết cho rằng 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 . Kết quả cuối cùng là hầu hết mọi người thấy hiệu suất bị phạt 20-30% khi chạy các chương trình x86-64 với Rosetta2 so với ARM64 gốc. Đó 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 biên dịch bắt kịp

Tuy nhiên, có một nhược điểm, đặc biệt đối với người dùng các gói tính toán số trong Python. ISA x86-64 không phải là một đặc điểm kỹ thuật cố định, mà là một đặc điểm kỹ thuật của Intel đã phát triển đáng kể theo thời gian, bổ sung thêm các hướng dẫn chuyên biệt mới cho các khối lượng công việc khác nhau. Đặc biệt, trong 10 năm qua, Intel và AMD đã triển khai hỗ trợ cho “hướng dẫn véc-tơ”, hoạt động đồng thời trên nhiều phần dữ liệu. Cụ thể, những bổ sung này cho 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ể hữu ích 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 tệp nhị phân cho x86-64. Vấn đề là Rosetta2 không hỗ trợ bất kỳ nhóm 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 tệp 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ể tự động chọn giữa các đường dẫn mã AVX, AVX2, AVX-512 và không phải AVX, phát hiện các khả năng của CPU trong thời gian chạy. Các chương trình này sẽ hoạt động tốt trong Rosetta2 vì các khả năng của CPU được báo cáo cho các quy trình chạy trong 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 phải AVX khi chạy. Trong trường hợp đó, nó sẽ không hoạt động trong Rosetta2 nếu trình đóng gói cho rằng 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 trong Rosetta2 trên M1. Ngoài ra, ngay cả khi một chương trình hoạt động trong Rosetta2, việc không có thứ gì đó như AVX sẽ khiến M1 chậm hơn khi thực hiện một số loại xử lý mảng nhất định. [Một lần nữa, so với các chương trình sử dụng AVX trên CPU Intel. Vì nhiều lý do, chỉ một số thư viện Python sử dụng AVX, vì vậy bạn có thể nhận thấy hoặc không nhận thấy sự khác biệt lớn tùy thuộc vào trường hợp sử dụng của bạn. ]

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 các bánh xe macOS ARM64 gốc hoặc xây dựng các gói từ nguồn

  2. Sử dụng bản phân phối Python x86-64, như Anaconda hoặc conda-forge, với Rosetta2

  3. Sử dụng bản phân phối conda-forge macOS ARM64 thử nghiệm

Tùy chọn đầu tiên hiện đang gặp thách thức vì rất ít dự án Python đã tải lên bánh xe ARM64 gốc cho 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 Actions] để xây dựng các 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 một gói không có bánh xe, thì pip sẽ cố gắng xây dựng gói đó từ đầu, điều này có thể hoạt động hoặc không tùy thuộc vào việc bạn có sẵn trình biên dịch thích hợp và các phụ thuộc bên ngoài khác hay không

Tùy chọn thứ hai cung cấp phạm vi gói rộng nhất, 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 máy Mac M1 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 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 một khoảng dừng [đôi khi dài. ] khi khởi động 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 trong 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ụ: TensorFlow 2. Tuy nhiên, 4 bánh xe được cài đặt bởi pip sẽ không thành công [do cách nó được xây dựng], TensorFlow 2. 4 gói 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 bản phân phối conda-forge 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 tệp 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ó của họ. Đó là một giải pháp tuyệt vời cho việc 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 trên đó. Tuy nhiên, các gói 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

  • Làm theo 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 vào lúc này], Scikit-learning và pandas

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

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

Mặc dù đôi khi được gọi là CPU 8 nhân, nhưng M1 được mô tả đúng nhất là CPU 4+4 nhân. Có 4 "lõi hiệu suất cao" [đôi khi được gọi là "lõi P" trong tài liệu của Apple] và 4 "lõi hiệu suất cao" [đôi khi được gọi là "lõi 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ụ hầu hết năng lượng. Các lõi E có thiết kế khác với các lõi P, đánh đổi hiệu suất tối đa để tiêu thụ điện năng thấp hơn. Mặc dù chip máy tính để bàn và máy tính xách tay có hai lõi khác nhau là điều bất thường, nhưng điều này lại phổ biến trong CPU di động. Các quy trình nền và tác vụ điện toán có mức độ ưu tiên thấp có thể thực thi trên các lõi E, giúp tiết kiệm năng lượng và kéo dài tuổi thọ pin. Apple cung cấp các API để thiết lập “chất lượng dịch vụ” cho các luồng và tác vụ, điều này ảnh hưởng đến việc chúng được hệ điều hành gán cho các lõi P hay E

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ì sẽ xảy ra khi sử dụng nhiều luồng hoặc quy trình trong ứng dụng của bạn? . Nếu bạn chạy ít hơn 8, hệ điều hành có vẻ thích chạy chúng trên lõi P hơn. Để giúp định lượng điều này, chúng tôi đã tạo một tiêu chuẩn vi mô đơn giản, nơi chúng tôi tạo một hàm tính toán rất nhiều cosin

                        
                            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 chương trình đa xử lý. Nhóm 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 biểu đồ này

Thông lượng [đơn vị công việc/giây] và quy mô nhóm quy trình

Hành vi này nhất quán 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 quy trình trở xuống. Khi nhóm quy trình tăng lên hơn bốn, mức tăng thông lượng trên mỗi lõi đã giảm xuống 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 lợi thế của tám quy trình trước đây và giờ đây, các hiệu ứng lập lịch trình và tranh chấp bộ nhớ dẫn đến thông lượng đa dạng nhưng không được cải thiện. Ngoài ra, điều thú vị cần lưu ý là đối với tổng thông lượng tối đa 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 hề nhỏ từ các lõi E, vì vậy bạn nên sử dụng chúng nếu có thể và hệ thống phân phối công việc của bạn có thể xử lý các tác vụ có thể mất nhiều thời gian khác nhau giữa các công nhân. [Có nghĩa là, công việc phải được lên lịch động hoặc phải hỗ trợ ăn cắp công việc. ] Chạy thử nghiệm mở rộng quy mô tương tự trên máy Mac của Intel cho thấy hiệu suất đạt được từ các lõi E trên M1 gần tương đương với hiệu suất đạt được từ siêu phân luồng trên CPU Intel. Tuy nhiên, hai tính năng là hoàn toàn khác nhau

Còn Linux và Windows trên M1 thì sao?

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ó Boot Camp tương đương để khởi động kép máy Mac M1 sang Linux hoặc Windows và những nỗ lực để chuyển Linux sang chạy tự nhiên trên phần cứng M1 vẫn còn. . Tuy nhiên, có [khi viết bài này] hai cách để chạy Linux trên M1

  • Máy tính để bàn Docker

  • Máy tính để bàn Parallels cho Mac

Trong cả hai trường hợp, bạn cần chạy bản phân phối Linux được biên dịch cho ARM64, nhưng những bản phân phối này luôn sẵn có 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 nhận 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 . Ví dụ: bộ thử nghiệm đơn vị mở rộng của Numba chạy nhanh hơn khoảng 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 vẫn chưa tìm ra cách chạy các bản phân phối ARM Linux 32-bit trên M1. ]

Parallels Desktop hiện cũng có thể chạy cổng ARM64 của Windows, nhưng phần mềm Windows dành cho ARM không phổ biến bằng phần mềm Linux. Bản thân Windows chỉ có sẵn cho ARM thông qua Chương trình Người dùng nội bộ Windows và gần như tất 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 đối với các nhà khoa học dữ liệu là gì?

Lợi ích lớn nhất của M1 đối với 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 luồng đơn cao

  • Tuổi thọ pin tuyệt vời [đối với máy tính xách tay]

Máy Mac M1 không cung cấp bất kỳ thứ gì mang lại lợi ích cụ thể cho các nhà khoa học dữ liệu, nhưng điều đó có thể sẽ đến [xem phần tiếp theo]

Tuy nhiên, M1 hiện đang nhắm đến các thiết bị có công suất thấp nhất trong dòng sản phẩm của Apple, khiến nó có một số nhược điểm

  • Chỉ có bốn lõi CPU hiệu năng cao. Nhiều thư viện khoa học dữ liệu [như TensorFlow, PyTorch và Dask] được hưởng lợi từ nhiều lõi CPU hơn, do đó, chỉ có bốn lõi là một nhược điểm

  • Tối đa 16 GB RAM. Nhiều bộ nhớ hơn 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 alpha duy nhất có thể sử dụng GPU M1 hoặc ANE là coremltools, thư viện này 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à vận chuyển bánh xe Python cho máy Mac ARM64 một cách nhất quán và có khả năng sẽ có những khoảng trống. Chạy dưới Rosetta2 có thể là tùy 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à hoàn toàn không chạy

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

Có 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 nó là CPU đầu tiên trong dòng máy 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 có nhiều lõi CPU hơn và nhiều bộ nhớ hơn. Đồng thời, hệ sinh thái dành cho nhà phát triển Python sẽ bắt kịp và các gói conda và bánh xe ARM64 gốc sẽ khả dụng hơn

Nhưng sự phát triển thú vị nhất sẽ là khi các thư viện máy học có thể bắt đầu tận dụng GPU mới và lõi Apple Neural Engine trên Apple Silicon. Apple cung cấp các API như Metal và ML Compute 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 Compute 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 xa Apple, M1 thể hiện những gì bộ xử lý ARM dành cho máy tính để bàn có thể làm được, 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 trên thị trường này. Ví dụ: CPU ARM lớp M1 của 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

Phần kết luận

Máy 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 những gì. Đối với mục đích sử dụng thông thường, hiệu suất là tuyệt vời, nhưng các hệ thống này chưa 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 có một chiếc M1 vì những lý do khác và có ý định thực hiện một số khoa học dữ liệu nhẹ, thì chúng hoàn toàn phù hợp. Để sử dụng nhiều hơn, bạn sẽ muốn gắn bó với máy Mac của Intel ngay bây giờ, nhưng hãy theo dõi cả quá trình phát triển phần mềm khi 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ố hạn chế mà chúng ta thấy ngày nay

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

Nói chung, M1 là một nền tảng tuyệt vời để phát triển mã, kể cả python, nếu mục tiêu của bạn là lập trình mã trên máy tính xách tay .

Làm cách nào để cài đặt Python trong Mac M1 Pro?

Cài đặt Python trên macOS .
Bước 1. Bộ xử lý Apple Silicon hay Intel? . .
Bước 2. Tải xuống Python 3. 10. .
Bước 3. Cài đặt qua HomeBrew [Tùy chọn].
Bước 4. Tạo môi trường ảo. .
Bước 5. Cài đặt bất kỳ gói Python nào

Liệu Python 3. 8 có hoạt động trên máy Mac M1 không?

Trên Apple M1, kiến ​​trúc mặc định là arm64 và nhập hoạt động tốt trên Terminal với python 3. 8 .

Những chương trình nào không hoạt động trên M1 Mac?

Hiện tại, một số công cụ quan trọng sẽ không chạy trên máy Mac mới hoặc sẽ không chạy đúng cách. Chúng bao gồm Docker, Android Studio và Haskell . Danh sách các công cụ sẽ chạy trên Rosetta 2 nhưng không được tối ưu hóa cho M1 còn rộng hơn nhiều và bao gồm Atom, RStudio, PHPStorm, R, Flutter, VSCode, Golang,.

Chủ Đề