ساخت‌های بومی PyTorch Arm اکنون برای ویندوز در دسترس هستند

رابط کاربری Desktop development with C++
شکل 1: انتخاب پروژه در Visual Studio Installer
انتخاب MSVC در Visual Studio Installer
شکل 2: انتخاب MSVC در Visual Studio Installer

خوشحالیم از اعلام در دسترس بودن ساخت‌های بومی Arm از PyTorch برای ویندوز! تا کنون، توسعه‌دهندگان و محققان مجبور بودند PyTorch را به صورت محلی برای پشتیبانی از ویندوز Arm64 کامپایل کنند. با انتشار PyTorch 2.7، توسعه‌دهندگان اکنون می‌توانند به ساخت‌های بومی Arm از PyTorch برای ویندوز که برای پایتون 3.12 در دسترس است، دسترسی داشته باشند. این امکان را فراهم می‌کند تا از عملکرد کامل معماری Arm64 در دستگاه‌های ویندوزی، مانند Copilot+ PCs، برای آزمایش یادگیری ماشین استفاده کرد و یک پلتفرم قوی برای نوآوری و بهبود مدل‌ها در اختیار توسعه‌دهندگان و محققان قرار داد.

اکنون می‌توانید از ساخت‌های بومی Arm از PyTorch برای توسعه، آموزش و آزمایش مدل‌های یادگیری ماشین کوچک به صورت محلی در Copilot+ PCهای مجهز به Arm استفاده کنید. این شامل زمینه‌هایی مانند طبقه‌بندی تصاویر، پردازش زبان طبیعی و هوش مصنوعی مولد مانند Stable Diffusion است که در زیر به آن اشاره خواهد شد.

شروع به کار

پیش‌نیازها:

  • برای رفع وابستگی‌های از دست رفته، توصیه می‌کنیم MSVC و Rust را نصب کنید
  • در Visual Studio Installer، مطمئن شوید که VS 2022 C++ ARM64/ARM64EC build tools (آخرین نسخه) انتخاب شده است

PyTorch:

  • برای نصب نسخه پایدار PyTorch (2.7.0):
pip install --extra-index-url https://download.pytorch.org/whl torch
  • برای دسترسی به نسخه پیش‌نمایش (شبانه):
pip install --pre torch --index-url https://download.pytorch.org/whl/nightly/cpu

LibTorch:

  • راهنمای شروع به کار و نصب LibTorch را می‌توانید در وب‌سایت PyTorch پیدا کنید
  • برای دسترسی به نسخه پایدار LibTorch، litroch را انتخاب کرده و دستورالعمل‌ها را دنبال کنید
  • برای دسترسی به ساخت‌های شبانه: Release، Debug

توصیه‌ها:

توصیه می‌شود یک محیط مجازی (venv) در پروژه‌های خود ایجاد کنید. یک محیط مجازی وابستگی‌ها را بین پروژه‌ها جدا می‌کند و انزوا را فراهم می‌کند.

برای اطلاعات بیشتر، لطفاً به مستندات موجود در VS Code و Python مراجعه کنید.

مثال:

در این مثال بعدی، ما از باینری‌های بومی Arm PyTorch با مدل stabilityai/sd-turbo برای Stable Diffusion استفاده کرده‌ایم. برخی از اصطلاحات استفاده شده در این مثال:

Prompt (دستور): یک عبارت یا جمله توصیفی که توسط مدل Stable Diffusion برای تولید تصاویر استفاده می‌شود.

Steps (مراحل): یک نوار لغزنده که به کاربر اجازه می‌دهد تعداد مراحل استنتاجی را که مدل باید برای تولید تصاویر انجام دهد، انتخاب کند. مراحل بیشتر می‌تواند منجر به تصاویر با کیفیت بالاتر شود، اما پردازش آن بیشتر طول می‌کشد.

Seed (هسته): یک فیلد ورودی عددی که کاربر می‌تواند یک مقدار هسته خاص را برای اطمینان از تکرارپذیری تصاویر تولید شده وارد کند. اگر خالی گذاشته شود، از یک هسته تصادفی استفاده می‌شود که منجر به تصاویر مختلف در هر بار برای همان دستور می‌شود. مقدار پیش‌فرض 42 است.

در زیر کد آمده است که می‌توان آن را در مخزن GitHub نیز یافت: pytorch-examples/stable-diffusion:

import gradio as gr
import torch
from diffusers import StableDiffusionPipeline

device = "cpu"
pipe = StableDiffusionPipeline.from_pretrained("stabilityai/sd-turbo", torch_dtype=torch.float32)
pipe = pipe.to(device)

def generate_image(prompt, steps, seed):
    generator = None
    if seed is not None:
        generator = torch.Generator(device=device).manual_seed(seed)

    # guidance is 0.0 as recommended by sd-turbo
    # width and height are set to 512 as recommended by sd-turbo
    result = pipe(prompt, num_inference_steps=steps, num_images_per_prompt=2, guidance_scale=0.0, generator=generator, width=512, height=512)
    return result.images[0], result.images[1]

with gr.Blocks() as demo:
    gr.Markdown("# SD Turbo Demo - WoA")
    with gr.Row():
        prompt = gr.Textbox(label="Prompt", placeholder="Enter your prompt here")
        steps = gr.Slider(minimum=1, maximum=5, step=1, value=1, label="Steps")
        seed = gr.Number(label="Seed (leave empty for random seed)", value=42, precision=0)
    with gr.Row():
        image1 = gr.Image(type="pil", label="Generated Image 1")
        image2 = gr.Image(type="pil", label="Generated Image 2")
    gr.Button("Generate").click(
        fn=generate_image,
        inputs=[prompt, steps, seed],
        outputs=[image1, image2]
    )

demo.launch(share=False)

خروجی:

سلب مسئولیت: مدل استفاده شده در این مثال stabilityai/sd-turbo است. از آنجا که این یک برنامه هوش مصنوعی مولد اساسی است، ما هیچ مسئولیتی در قبال نتایج تولید شده نداریم. شما به تنهایی مسئول تولید تصاویر در رایانه خود هستید.

توجه:

برخی از بسته‌هایی که ممکن است در کنار PyTorch استفاده کنید، از پشتیبانی بومی Arm برای ویندوز برخوردار نیستند.
pip می‌تواند به طور خودکار وابستگی‌ها را از کد منبع (tar.gz) نصب کرده و با استفاده از MSVC و Rust روی سیستم شما، آنها را به فایل‌های ".whl" کامپایل کند.

لطفاً بخش پیش‌نیازها را برای جزئیات بیشتر بررسی کنید.

  • NumPy 2.2.3 را می‌توان از طریق کامپایل نصب کرد.
pip install numpy==2.2.3
  • safetensors 0.5.3 را می‌توان از طریق کامپایل نصب کرد.
    pip install safetensors==0.5.3

نتیجه‌گیری

توسعه‌دهندگان اکنون می‌توانند شروع به استفاده از ساخت‌های پایدار بومی Arm PyTorch برای ویندوز کنند تا برنامه‌هایی ایجاد کنند که از هوش مصنوعی استفاده کرده و از پتانسیل کامل معماری ARM بهره ببرند. همین امروز باینری‌های بومی را امتحان کنید! دانلود از اینجا.