پای‌دانتیکپای‌دانتیکپای‌دانتیک
  • صفحه اصلی
  • اخبار
  • آموزش
  • تجربه
  • نقشه راه
  • فریمورک
    • django
    • fastapi
خواندن: Torchquad: کتابخانه Python برای ادغام عددی با شتاب GPU
اشتراک گذاری
ورود
0

هیچ محصولی در سبد خرید نیست.

اعلان نمایش بیشتر
تغییردهنده سایز فونتAa
پای‌دانتیکپای‌دانتیک
0
تغییردهنده سایز فونتAa
Search
  • صفحه اصلی
  • آموزش
  • اخبار
  • تجربه
  • نقشه راه
  • فریمورک
    • django
    • fastapi
Have an existing account? ورود
ما را دنبال کنید
© 2022 Foxiz News Network. Ruby Design Company. All Rights Reserved.
پای‌دانتیک > آموزش > Torchquad: کتابخانه Python برای ادغام عددی با شتاب GPU
آموزش

Torchquad: کتابخانه Python برای ادغام عددی با شتاب GPU

afshin azizzadeh
آخرین به روز رسانی: آبان 13, 1402 5:55 ب.ظ
afshin azizzadeh
اشتراک گذاری
7 دقیقه زمان مطالعه
Torchquad کتابخانه Python برای ادغام عددی با شتاب GPU
Torchquad کتابخانه Python برای ادغام عددی با شتاب GPU
اشتراک گذاری

Contents
معرفی کوتاه Numerical Integrationروش های مختلفی برای ادغام عددی وجود داردراهنمای نصبکونداپایتونمثال هاTorchquadکارایینتیجه گیری

مقدمه

در زمینه علوم و مهندسی مدرن، ادغام نقشی محوری دارد. این پایه و اساس بسیاری از محاسبات است، از حل معادلات دیفرانسیل پیچیده تا محاسبه مناطق زیر منحنی. با این حال، با پیچیده‌تر شدن محاسبات و فشرده‌تر شدن داده‌ها، روش‌های سنتی اغلب کوتاه می‌آیند و زمان و منابع قابل توجهی را مصرف می‌کنند. Torchquad را وارد کنید، یک پلاگین پایتون که در شرف تغییر بازی است

معرفی کوتاه Numerical Integration

Numerical Integration روشی اساسی است که در ریاضیات و علوم محاسباتی برای تقریب انتگرال های معین استفاده می شود. این تکنیک زمانی به کار می رود که به دست آوردن یک راه حل تحلیلی برای یک انتگرال دشوار باشد یا زمانی که تابعی که باید یکپارچه شود فقط به عنوان نقاط داده در دسترس است. در حالی که ادغام تحلیلی راه حل های دقیقی را ارائه می دهد، ادغام عددی راه حل های تقریبی را ارائه می دهد که برای بسیاری از مسائل دنیای واقعی بیش از اندازه کافی است.

روش های مختلفی برای ادغام عددی وجود دارد

قانون ذوزنقه ای

قانون سیمپسون

ربع گوسی

روش مونت کارلو

هر روش بسته به ماهیت عملکرد ادغام شده و دقت مورد نیاز، نقاط قوت و ضعف خود را دارد. برای مثال، قانون ذوزنقه‌ای از یک سری ذوزنقه‌ها برای تخمین مساحت زیر منحنی استفاده می‌کند، در حالی که قانون سیمپسون از سهمی‌ها استفاده می‌کند. از طرف دیگر، ربع گاوسی روش پیشرفته تری است که دقت بالایی را برای توابع چند جمله ای فراهم می کند.

در حالی که این روش‌های یکپارچه‌سازی عددی سنتی مفید بوده‌اند، می‌توانند از نظر محاسباتی گران‌تر شوند هنگام برخورد با انتگرال‌های با ابعاد بالا یا مجموعه داده‌های بزرگ. هر نقطه داده اضافی به طور قابل توجهی زمان محاسبه را در چنین سناریوهایی افزایش می دهد و این روش ها را کمتر امکان پذیر می کند. اینجاست که روش‌ها و ابزارهای محاسباتی جدید مانند Torchquad وارد عمل می‌شوند و از قدرت شتاب GPU برای انجام یکپارچه‌سازی عددی با سرعت‌های بسیار سریع‌تر و با دقت بیشتر استفاده می‌کنند.

راهنمای نصب

ابتدا باید مطمئن شوید که PyTorch را با پشتیبانی CUDA نصب کرده اید. برای این کار می توانید این آموزش را دنبال کنید.

هنگامی که PyTorch با پشتیبانی CUDA نصب شده است، می توانید این خطوط را در کنسول خود اجرا کنید:

کوندا

conda install torchquad -c conda-forge

پایتون

pip install torchquad

پس از نصب Torchquad، می توانید با اجرای این کد در اسکریپت Jupyter Notebook/Python تست کنید که همه چیز کار می کند

import torchquad
torchquad._deployment_test()

اگر با مشکل مواجه شدید، می توانید از اسناد رسمی دیدن کنید

https://github.com/esa/torchquad?source=post_page-----c5f1fd32163d--------------------------------

مثال ها

اول از همه، تمام کتابخانه های لازم را وارد کنید

import numpy as np
import torch
import sympy as smp
import matplotlib.pyplot as plt
from torchquad import Simpson, MonteCarlo, set_up_backend
from scipy.integrate import quad

سپس، ما باید پشتیبان و پشتیبانی GPU خود را تنظیم کنیم

# Enable GPU support if available and set the floating point precision
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
print(device) # This will print "cuda" if everything work correctly
set_up_backend("torch", data_type="float32")

حالا اولین مشکل ماست. فرض کنید که باید این انتگرال را به صورت عددی حل کنیم

با اسکیپی، به این صورت خواهد بود:

def integrand(x):
    return np.cos(x) / (1 + np.sin(x)) 

quad(integrand, 0, np.pi/2)
# (0.6931471805599454, 7.695479593116622e-15)

در Torchquad باید از توابع PyTorch استفاده کنیم، بنابراین به شکل زیر خواهد بود

def integrand_pytorch(x):
    return torch.cos(x) / (1 + torch.sin(x)) 

integrator = Simpson()  # Initialize Simpson solver
integrator.integrate(integrand_pytorch, dim=1, N=999999,
             integration_domain=[[0, np.pi/2]],
             backend="torch",)
# 0.6931

ما می توانیم از یکپارچه کننده های مختلف استفاده کنیم، به عنوان مثال، روش مونت کارلو

def integrand_pytorch(x):
    return torch.cos(x) / (1 + torch.sin(x)) 

integrator = MonteCarlo()  # Initialize Simpson solver
integrator.integrate(integrand_pytorch, dim=1, N=999999,
             integration_domain=[[0, np.pi/2]],
             backend="torch",)
# 0.6927

می بینید که خطا اکنون بزرگتر است، زیرا مقدار واقعی به 0.6931 نزدیکتر است، اما این بار 0.6927 داریم.

اکنون، مشکل دوم ما – انتگرال 5 بعدی

در اینجا چیزی است که در Scipy به نظر می رسد

%%timeit
def integrand(*x):
    return np.sum(np.sin(x))

nquad(integrand, [[0, 1]] * 5)[0]
# Result: 2.2984884706593016
# Time: 31.8 s ± 594 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

Torchquad

def integrand_pytorch(x):
    return torch.sum(torch.sin(x), dim=1)

N = 1000000
integrator = Simpson()  # Initialize Simpson solver
integrator.integrate(integrand_pytorch, dim=5, N=N, integration_domain=[[0, 1]] * 5)
# Result: 2.2985
# Time: 3.59 ms ± 113 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

شما می توانید با استفاده از انواع داده های مختلف، دقت (پارامتر N)و انتگرال گیرهای مختلف، دقت را افزایش دهید. شما می توانید تمام یکپارچه کننده های موجود را در اینجا پیدا کنید.

کارایی

با استفاده از پردازنده‌های گرافیکی، Torchquad با روش‌های یکپارچه‌سازی که موازی‌سازی آسان را ارائه می‌کنند، به خوبی مقیاس می‌شود. به عنوان مثال، در زیر، نتایج خطا و زمان اجرا را برای ادغام تابع f(x,y,z) = sin(x * (y+1)²) * (z+1) در رایانه رومیزی درجه یک مصرف کننده مشاهده می کنید.

نتیجه گیری


ادغام عددی در علوم ریاضی و محاسباتی ضروری است و اغلب تنها رویکرد عملی را برای حل مسائل پیچیده و دنیای واقعی ارائه می دهد. با این حال، همانطور که ما به محاسبات پیچیده تر و مجموعه داده های بزرگتر می پردازیم، روش های سنتی ممکن است کوتاهی کنند و راه حل قدرتمندتری را طلب کنند.

اینجاست که TorchQuad وارد عمل می‌شود و با رویکرد شتاب‌دهنده GPU برای یکپارچه‌سازی عددی، انقلابی در این زمینه ایجاد می‌کند. با استفاده از سرعت و کارایی پردازنده‌های گرافیکی مدرن، راه‌حلی سریع‌تر و دقیق‌تر ارائه می‌دهد و برای طیف گسترده‌ای از کاربران، از دانش‌آموزان گرفته تا محققان باتجربه، قابل دسترسی است

منبع مطلب

Sign Up For Daily Newsletter

Be keep up! Get the latest breaking news delivered straight to your inbox.
By signing up, you agree to our Terms of Use and acknowledge the data practices in our Privacy Policy. You may unsubscribe at any time.
این مقاله را به اشتراک بگذارید
Facebook Twitter Copy Link Print
اشتراک گذاری
مقاله قبلی 10 اشتباه رایج برنامه‌نویس‌های مبتدی پایتون 10 اشتباه رایج برنامه‌نویس‌های مبتدی پایتون
مقاله بعدی آموزش ساخت اپلیکیشن با sqlalchemy + postgres + docker آموزش ساخت اپلیکیشن با sqlalchemy + postgres + docker
پیام بگذارید پیام بگذارید

دیدگاهتان را بنویسید لغو پاسخ

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

همه دسته بندی ها

  • django
  • fastapi
  • آموزش
  • اخبار
  • تجربه
  • دسته‌بندی نشده
  • نقشه راه
پای‌دانتیکپای‌دانتیک
ما را دنبال کنید
قالب فاکسیز فارسی شده توسط تیم راستچین 2023
Welcome Back!

Sign in to your account