در این مطلب، ویدئو مقدمه JAX: تسریع تحقیقات یادگیری ماشین با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:10:29
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:01,520 –> 00:00:03,840
سلام نام من جیک واندرپلوس است، من یک
2
00:00:03,840 –> 00:00:05,520
مهندس نرم افزار در تحقیقات گوگل
3
00:00:05,520 –> 00:00:07,839
هستم و امروز می خواهم در مورد jaxx به شما بگویم
4
00:00:07,839 –> 00:00:09,599
که یک بسته پایتون برای
5
00:00:09,599 –> 00:00:11,280
تسریع تحقیقات یادگیری ماشین شما
6
00:00:11,280 –> 00:00:12,559
است،
7
00:00:12,559 –> 00:00:15,440
بنابراین در یک نگاه jaxx چیست که اساسا
8
00:00:15,440 –> 00:00:17,760
jax یک API سبک وزن برای
9
00:00:17,760 –> 00:00:20,160
آرایه ارائه می دهد. محاسبات مبتنی بر محاسبات بسیار
10
00:00:20,160 –> 00:00:22,720
شبیه numpy است، بنابراین اگر در حال نوشتن
11
00:00:22,720 –> 00:00:25,519
کد numpy در پایتون هستید، jax
12
00:00:25,519 –> 00:00:27,760
احتمالاً بسیار آشنا خواهد بود،
13
00:00:27,760 –> 00:00:29,760
علاوه بر این، آنچه اضافه میکند مجموعهای از
14
00:00:29,760 –> 00:00:32,159
تبدیلهای تابع قابل ترکیب برای
15
00:00:32,159 –> 00:00:33,680
انجام کارهایی مانند
16
00:00:33,680 –> 00:00:36,640
تمایز خودکار درست در زمان کامپایل
17
00:00:36,640 –> 00:00:38,480
و سپس بردارسازی خودکار و
18
00:00:38,480 –> 00:00:40,559
موازی سازی کد شما
19
00:00:40,559 –> 00:00:42,160
و سپس در نهایت کاری که می توانید با
20
00:00:42,160 –> 00:00:44,160
این کد انجام دهید پس از نوشتن
21
00:00:44,160 –> 00:00:47,520
روی cpu یا gpu یا tpu بدون هیچ تغییری
22
00:00:47,520 –> 00:00:49,840
در کد شما اجرا می شود، بنابراین در نهایت یک
23
00:00:49,840 –> 00:00:52,000
سیستم بسیار قدرتمند برای ساخت مدل ها از
24
00:00:52,000 –> 00:00:54,320
ابتدا و بررسی مشکلات مختلف یادگیری ماشین
25
00:00:54,320 –> 00:00:55,760
26
00:00:55,760 –> 00:00:58,160
در بالای این jax در
27
00:00:58,160 –> 00:01:01,120
رقابت اخیر ml perf که
28
00:01:01,120 –> 00:01:03,120
نرمافزارهای مختلف را به نمایش گذاشته بود، بسیار سریع است. و سیستمهای سختافزاری
29
00:01:03,120 –> 00:01:04,720
در مقابل یکدیگر در
30
00:01:04,720 –> 00:01:07,760
الگوریتمها و مشکلات یادگیری عمیق رایج، jax
31
00:01:07,760 –> 00:01:10,240
بهتر از سایر سیستمها در برخی از
32
00:01:10,240 –> 00:01:12,400
این مشکلات رایج عمل میکند، میتوانید
33
00:01:12,400 –> 00:01:14,479
به این نتایج نگاهی بیندازید و ببینید که چگونه
34
00:01:14,479 –> 00:01:16,080
جک در مقابل برخی از سیستمهای مورد علاقه دیگر شما قرار میگیرد،
35
00:01:16,080 –> 00:01:17,759
36
00:01:17,759 –> 00:01:18,960
پس بیایید به
37
00:01:18,960 –> 00:01:21,280
عقب برگردیم و انگیزه ایجاد کنیم. jax کمی به
38
00:01:21,280 –> 00:01:23,200
این فکر کنید که چگونه
39
00:01:23,200 –> 00:01:25,680
میتوانید یک شبکه عصبی عمیق عملکردی و مقیاسپذیر را
40
00:01:25,680 –> 00:01:27,600
از ابتدا در
41
00:01:27,600 –> 00:01:28,720
پایتون پیادهسازی کنید،
42
00:01:28,720 –> 00:01:31,200
معمولاً برنامهنویسان پایتون
43
00:01:31,200 –> 00:01:32,880
با چیزی شبیه numpy شروع میکنند، زیرا
44
00:01:32,880 –> 00:01:34,720
این زبان پردازش داده مبتنی بر آرایه آشنا
45
00:01:34,720 –> 00:01:36,159
است که
46
00:01:36,159 –> 00:01:38,000
به معنای واقعی کلمه برای دههها استفاده میشود. انجمن پایتون
47
00:01:38,000 –> 00:01:39,040
48
00:01:39,040 –> 00:01:40,880
و اگر میخواهید یک
49
00:01:40,880 –> 00:01:43,280
سیستم یادگیری عمیق در numpy ایجاد کنید، ممکن است
50
00:01:43,280 –> 00:01:45,200
با یک روش پیشبینی شروع
51
00:01:45,200 –> 00:01:46,960
کنید، این یک شبکه عصبی پیشخور
52
00:01:46,960 –> 00:01:49,119
است که دنبالهای از
53
00:01:49,119 –> 00:01:52,000
محصولات نقطهای و توابع فعالسازی را انجام میدهد تا
54
00:01:52,000 –> 00:01:53,920
ورودیها را به نوعی
55
00:01:53,920 –> 00:01:56,159
خروجی تبدیل کند.
56
00:01:56,159 –> 00:01:57,600
چیزی که بعد از
57
00:01:57,600 –> 00:02:00,560
تعریف این مدل به آن نیاز دارید، قابل یادگیری است، تابع ضرر است
58
00:02:00,560 –> 00:02:01,759
و این همان چیزی است که به
59
00:02:01,759 –> 00:02:03,759
شما معیاری را می دهد که سعی می کنید
60
00:02:03,759 –> 00:02:05,920
برای مطابقت با بهترین
61
00:02:05,920 –> 00:02:08,239
مدل یادگیری ماشینی بهینه سازی کنید، بنابراین در اینجا ما
62
00:02:08,239 –> 00:02:10,878
از میانگین مجذور خطا استفاده می کنیم
63
00:02:10,878 –> 00:02:12,560
و اکنون چه چیزی در این
64
00:02:12,560 –> 00:02:14,959
یادگیری عمیق در یادگیری عمیق ناتوانی وجود ندارد. محاسبات زیادی طول می کشد
65
00:02:14,959 –> 00:02:16,959
ما می خواهیم آن را
66
00:02:16,959 –> 00:02:19,280
روی سخت افزار شتاب دهنده اجرا کنیم، بنابراین می
67
00:02:19,280 –> 00:02:22,080
خواهید این مدل را روی gpu و tpu اجرا کنید و این
68
00:02:22,080 –> 00:02:23,680
کار با numpy کلاسیک کمی دشوار است.
69
00:02:23,680 –> 00:02:25,040
70
00:02:25,040 –> 00:02:26,480
71
00:02:26,480 –> 00:02:28,480
72
00:02:28,480 –> 00:02:30,640
شما این تابع از دست دادن را
73
00:02:30,640 –> 00:02:32,800
بسیار کارآمد و بدون نیاز به
74
00:02:32,800 –> 00:02:35,280
تمایز عددی در طول مسیر
75
00:02:35,280 –> 00:02:38,160
انجام می دهید، کار بعدی که ممکن است بخواهید انجام دهید اضافه کردن یک
76
00:02:38,160 –> 00:02:40,000
هد کامپایل است تا بتوانید
77
00:02:40,000 –> 00:02:42,640
این عملیات را با هم ترکیب کنید و آنها را
78
00:02:42,640 –> 00:02:44,400
بسیار کارآمدتر کنید
79
00:02:44,400 –> 00:02:46,239
و در نهایت اگر با بزرگ کار می کنید
80
00:02:46,239 –> 00:02:48,000
مجموعه داده ها خوب است که بتوانیم
81
00:02:48,000 –> 00:02:50,480
این عملیات را در
82
00:02:50,480 –> 00:02:53,280
چندین هسته یا چندین ماشین موازی کنیم،
83
00:02:53,280 –> 00:02:55,599
بنابراین بیایید نگاهی بیندازیم که جک ها چه کاری می توانند
84
00:02:55,599 –> 00:02:58,560
انجام دهند تا این قطعات گم شده را
85
00:02:58,560 –> 00:03:00,640
در اولین مرحله پر کنند. ng شما می توانید انجام دهید این است
86
00:03:00,640 –> 00:03:04,480
که numpy import را با jax.numpy جایگزین کنید
87
00:03:04,480 –> 00:03:06,879
و این api
88
00:03:06,879 –> 00:03:09,200
در بسیاری از موارد مشابه numpy کلاسیک است، اما به شما این امکان را می دهد
89
00:03:09,200 –> 00:03:11,200
که برخی از این موارد را که
90
00:03:11,200 –> 00:03:13,120
در گذر اول گم شده بودند انجام دهید،
91
00:03:13,120 –> 00:03:16,000
به عنوان مثال jax به طور خودکار از طریق
92
00:03:16,000 –> 00:03:20,239
این بکاند xla cpus gpus
93
00:03:20,239 –> 00:03:23,120
و tpus را برای محاسبه سریع
94
00:03:23,120 –> 00:03:25,280
مدلهای شما مورد هدف قرار میدهد و الگوریتمهای شما در بالای
95
00:03:25,280 –> 00:03:27,760
آن jax مجموعهای از
96
00:03:27,760 –> 00:03:30,159
تبدیلهای قابل ترکیب را ارائه میدهد که یکی از آنها تبدیل grad است
97
00:03:30,159 –> 00:03:32,720
که میتواند تابع اتلاف
98
00:03:32,720 –> 00:03:34,400
مانند mse loss را بگیرد
99
00:03:34,400 –> 00:03:36,720
و آن را به یک تبدیل کند. تابع پایتون
100
00:03:36,720 –> 00:03:39,120
که گرادیان را محاسبه میکند
101
00:03:39,120 –> 00:03:40,640
و حالا وقتی این
102
00:03:40,640 –> 00:03:42,560
تابع گرادیان را دارید، ممکن است بخواهید آن
103
00:03:42,560 –> 00:03:45,840
را در چندین داده اعمال کنید و در
104
00:03:45,840 –> 00:03:48,640
jax دیگر لازم نیست
105
00:03:48,640 –> 00:03:50,959
پیشبینی و توابع از دست دادن خود را بازنویسی کنید تا
106
00:03:50,959 –> 00:03:53,599
این دادههای دستهای را در صورت ارسال آنها انجام دهید.
107
00:03:53,599 –> 00:03:55,360
تبدیل vmap این به
108
00:03:55,360 –> 00:03:57,360
طور خودکار کد شما را بردار میکند، بنابراین
109
00:03:57,360 –> 00:03:59,280
میتوانید از همان کد در چندین
110
00:03:59,280 –> 00:04:00,959
دسته استفاده کنید،
111
00:04:00,959 –> 00:04:02,720
اگر میخواهید این را کامپایل کنید، میتوانید
112
00:04:02,720 –> 00:04:04,879
از تبدیل jit که st استفاده کنید. و
113
00:04:04,879 –> 00:04:07,840
برای کامپایل کردن به موقع و این
114
00:04:07,840 –> 00:04:10,080
کار با استفاده از کامپایلر xli عملیات را با هم ترکیب
115
00:04:10,080 –> 00:04:12,080
می کند تا کد شما گاهی
116
00:04:12,080 –> 00:04:14,959
بسیار سریعتر از آنچه در ابتدا بود انجام شود
117
00:04:14,959 –> 00:04:16,880
و در نهایت اگر می خواهید
118
00:04:16,880 –> 00:04:18,880
کد خود را موازی کنید، یک تبدیل
119
00:04:18,880 –> 00:04:22,720
بسیار شبیه به vmap وجود دارد که pmap نامیده می شود
120
00:04:22,720 –> 00:04:24,639
و اگر pmap را از طریق کد خود اجرا کنید،
121
00:04:24,639 –> 00:04:27,199
این میتواند به صورت بومی
122
00:04:27,199 –> 00:04:29,759
چندین هسته را در سیستم شما یا
123
00:04:29,759 –> 00:04:32,320
دستهای از tpus یا gpus که به آنها دسترسی دارید هدفگیری کند،
124
00:04:32,320 –> 00:04:33,440
125
00:04:33,440 –> 00:04:35,440
بنابراین سیستم بسیار قدرتمندی
126
00:04:35,440 –> 00:04:38,479
برای ایجاد این
127
00:04:38,479 –> 00:04:41,360
محاسبات سریع بدون نیاز به چیز اضافی است. کد
128
00:04:41,360 –> 00:04:43,840
بنابراین ایدههای کلیدی اینجا در جک است که
129
00:04:43,840 –> 00:04:46,479
کد پایتون به یک نمایش متوسط ردیابی میشود و ja
130
00:04:46,479 –> 00:04:49,120
میداند چگونه ای
131
00:04:49,120 –> 00:04:50,560
نمایش میانی را تغییر ده
132
00:04:50,560 –> 00:04:51,919
و من کم
133
00:04:51,919 –> 00:04:54,400
در مورد این موضوع در یک لحظه به شما میگویم در
134
00:04:54,400 –> 00:04:56,479
مان نمایش میانی که کا
135
00:04:56,479 –> 00:04:58,960
پایل خاص دامنه را از طریق امکانپذیر میسازد. xla
136
00:04:58,960 –> 00:05:00,080
137
00:05:00,080 –> 00:05:02,560
تا بتوانید باطن های مختلف را هدف قرار دهید
138
00:05:02,560 –> 00:05:05,039
، این کاربر آشنا با api رو به رو است بر
139
00:05:05,039 –> 00:05:07,520
اساس numpy و scipy، بنابراین اگر
140
00:05:07,520 –> 00:05:09,840
در i کدنویسی کرده اید فضای داده پایتون
141
00:05:09,840 –> 00:05:11,919
برای مدتی jax بای