برنامه نویسی

استفاده از TensorFlow 2.8 در تراشه Apple Silicon arm64

رایانه من اخیراً یک رابط ناخوشایند با دی هیدروژن مونوکسید داشت. برای تعیین اینکه آیا دوباره به زندگی باز می گردد اما ظاهر خوبی ندارد. بنابراین، من یک مک بوک جدید خریدم، یعنی چیپ M3 (arm64). من تجربه خوبی با استفاده از M1 در کار قبلی خود داشتم، بنابراین مشتاقانه منتظر آن بودم.

البته 😩 x86 در مقابل arm مشکلات معماری بلافاصله با استفاده از TensorFlow شروع شد.

در اینجا نحوه رفع آن است. درخواست کشش: تصویربرداری سلول عمیق #229

DeepCell از TF 2.8 استفاده می کند، بنابراین ما باید از آن استفاده کنیم. متأسفانه بسته 2.8.4 با باینری های ARM ارائه نمی شود. اتفاقا TF 2.16.1 میکند دارای باینری arm64 … اما من نمی توانم از آن در اینجا استفاده کنم 😑

اپل مدارکی برای نصب TensorFlow و پلاگین “فلزی” دارد. به خصوص،

برای TensorFlow نسخه 2.12 یا قبل از آن:

python -m pip install tensorflow-macos

در مورد ما به tensorflow-macos==2.8.0 نیاز داریم که در تاریخچه انتشار tensorflow-macos یافت می شود. متأسفانه لیست فایل ها نشان می دهد که هیچ توزیع پایتون 3.10 وجود ندارد، بنابراین باید به پایتون 3.9 تنزل بدهم.

در مورد tensorflow-metal مستندات بسته می گوید که ما به نسخه 0.4.0 نیاز داریم.

من یک فایل مورد نیاز جدید را برای کاربران Mac arm64 بسته بندی کردم:

$ cat requirements-mac-arm64.txt
tensorflow-macos==2.8.0
tensorflow-metal==0.4.0
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سپس الزامات مک را نصب می کنید:

pip install -r requirements-mac-arm64.txt
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

البته هذیان ها متوقف نمی شوند! در حال دویدن pip install -r requirements.txt DeepCell را نصب نمی کند، زیرا بستگی دارد tensorflow – نه tensorflow-macos (که همان ماژول پایتون را فراهم می کند tensorflow).

بنابراین من آن را به این ترتیب اجرا کردم تا پس از نصب وابستگی‌هایی که می‌توانیم، از وابستگی‌ها رد شوم:

pip install -r requirements-mac-arm64.txt
pip install -r requirements.txt
pip install -r requirements.txt --no-deps
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سپس یک شکست جالب پروتوباف گرفتم.

If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:
 1. Downgrade the protobuf package to 3.20.x or lower.
 2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).

More information: https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

رفع سریع: جدیدترین نسخه 3.20.x protobuf، 3.20.3 را بگیرید.

اپل یک اسکریپت آزمایشی ارائه می دهد:

import tensorflow as tf

cifar = tf.keras.datasets.cifar100
(x_train, y_train), (x_test, y_test) = cifar.load_data()
model = tf.keras.applications.ResNet50(
    include_top=True,
    weights=None,
    input_shape=(32, 32, 3),
    classes=100,)

loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)
model.compile(optimizer="adam", loss=loss_fn, metrics=["accuracy"])
model.fit(x_train, y_train, epochs=5, batch_size=64)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

یک مدل 180 مگابایتی دانلود بعدا… ما طلایی شدیم.

2024-06-05 23:10:30.794862: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:113] Plugin optimizer for device_type GPU is enabled.
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

فقط برای تأیید، اجازه دهید Activity Monitor را بررسی کنیم – و بله، از gpu استفاده می کند. 🎉 😤

تصویر صفحه نمایش مانیتور فعالیت که درصد استفاده از GPU و زمان استفاده از GPU را نشان می دهد.

فوو خوب، امیدوارم این یک مورد یک بار باشد. بیشتر توسعه ما ابر است که x86 است، فرمت باینری رایج تر.

تا ماجراجویی بعدی ما با باینری ها ✌

تصویر جلد توسط Kari Shea در Unsplash

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا