در این مطلب، ویدئو Ray: پایتون سریعتر از طریق محاسبات موازی و توزیع شده با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:09:41
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,640 –> 00:00:03,280
سلام به همه، پس امروز می خواهم در
2
00:00:03,280 –> 00:00:04,880
مورد این کتابخانه کوچک شگفت انگیز
3
00:00:04,880 –> 00:00:05,680
4
00:00:05,680 –> 00:00:08,320
به نام ray با شما صحبت کنم که
5
00:00:08,320 –> 00:00:09,599
اخیراً کمی از
6
00:00:09,599 –> 00:00:11,599
اشعه برای شما استفاده می کنم همانطور که وب سایت
7
00:00:11,599 –> 00:00:13,120
می گوید محاسبات توزیع شده سریع و ساده
8
00:00:13,120 –> 00:00:13,759
9
00:00:13,759 –> 00:00:15,120
و در واقع اگر فقط نگاه کنید در اطراف
10
00:00:15,120 –> 00:00:16,880
صفحه اول وب سایت
11
00:00:16,880 –> 00:00:18,880
تقریباً همه چیزهای اساسی را که
12
00:00:18,880 –> 00:00:20,800
باید در مورد کتابخانه بدانید را دریافت می کنید. اکنون rey
13
00:00:20,800 –> 00:00:22,720
در واقع پایه و اساس
14
00:00:22,720 –> 00:00:24,000
تعدادی کتابخانه دیگر
15
00:00:24,000 –> 00:00:26,640
به نام های tune و rlib برای یادگیری تقویتی
16
00:00:26,640 –> 00:00:27,119
17
00:00:27,119 –> 00:00:29,199
و همچنین یکی برای ارائه مدل شما در
18
00:00:29,199 –> 00:00:30,480
یک است. مد مقیاس پذیر
19
00:00:30,480 –> 00:00:31,679
من قصد ندارم هیچکدام از مواردی را پوشش دهم
20
00:00:31,679 –> 00:00:34,000
که فقط استفاده اساسی از ray را پوشش می دهم،
21
00:00:34,000 –> 00:00:34,559
22
00:00:34,559 –> 00:00:36,559
بنابراین در هسته اشعه قرار است به
23
00:00:36,559 –> 00:00:38,160
شما کمک کند تا کد خود را
24
00:00:38,160 –> 00:00:39,920
بدون تلاش زیاد موازی کنید و وقتی می گویم
25
00:00:39,920 –> 00:00:41,680
موازی نیستم. منظور فقط روی یک ماشین واحد است
26
00:00:41,680 –> 00:00:42,079
،
27
00:00:42,079 –> 00:00:43,680
اگرچه ما از اینجا شروع می کنیم،
28
00:00:43,680 –> 00:00:45,120
اما شما همچنین می توانید
29
00:00:45,120 –> 00:00:46,559
اساساً آن را با
30
00:00:46,559 –> 00:00:48,719
چندین ماشین موازی کنید یا با تنظیم یک
31
00:00:48,719 –> 00:00:50,320
خوشه با دست، چیزی که
32
00:00:50,320 –> 00:00:51,280
امروز نشان خواهم داد
33
00:00:51,280 –> 00:00:53,360
یا نمی توانید در اینجا روش هایی برای تنظیم
34
00:00:53,360 –> 00:00:54,800
خودکار خوشه ها
35
00:00:54,800 –> 00:00:57,039
و استقرار آنها در aws وجود دارد یا اینکه یک
36
00:00:57,039 –> 00:00:58,000
خوشه kubernetes
37
00:00:58,000 –> 00:01:00,239
یا چیزهایی مانند آن را می شناسید، مدل اصلی کار
38
00:01:00,239 –> 00:01:01,920
یا تقابل را می شناسید، چیزی که من
39
00:01:01,920 –> 00:01:03,120
در این
40
00:01:03,120 –> 00:01:04,879
ویدیو پوشش خواهم
41
00:01:04,879 –> 00:01:06,960
داد. ray مقداردهی اولیه شده است و
42
00:01:06,960 –> 00:01:10,080
تابع خود را با ray.remote تزئین کنید
43
00:01:10,080 –> 00:01:11,520
و سپس به جای فراخوانی تابع
44
00:01:11,520 –> 00:01:13,520
به طور معمول، آن را با استفاده
45
00:01:13,520 –> 00:01:15,040
از روش دور نقطهای روی آن فراخوانی میکنید
46
00:01:15,040 –> 00:01:16,960
و چیزی که به شما برمیگرداند یک آینده است،
47
00:01:16,960 –> 00:01:18,640
بنابراین وعده مقداری است
48
00:01:18,640 –> 00:01:20,400
که در آن برگردانده میشود. در برخی موارد می
49
00:01:20,400 –> 00:01:22,000
توانید این مقدار را
50
00:01:22,000 –> 00:01:25,280
به سایر توابع راه دور منتقل کنید و آنها منتظر خواهند بود
51
00:01:25,280 –> 00:01:26,159
52
00:01:26,159 –> 00:01:27,840
تا مقدار واقعی قبل
53
00:01:27,840 –> 00:01:29,439
از اجرا شدن آنها بازگردد و سپس در نهایت هنگامی
54
00:01:29,439 –> 00:01:31,119
که تمام وظایف خود را در یک حلقه برنامه ریزی
55
00:01:31,119 –> 00:01:31,759
56
00:01:31,759 –> 00:01:33,920
کردید می توانید از این تابع ray.get
57
00:01:33,920 –> 00:01:35,040
در هر یک از آنها استفاده کنید. یک
58
00:01:35,040 –> 00:01:37,119
ویژگی آینده یا چند ویژگی برای مرتب
59
00:01:37,119 –> 00:01:38,159
کردن خروجی آنها،
60
00:01:38,159 –> 00:01:40,320
بنابراین به عنوان مثال، چیزی را تنظیم
61
00:01:40,320 –> 00:01:42,159
کرده ام که خودم به مقدار مناسبی انجام می دهم،
62
00:01:42,159 –> 00:01:42,799
63
00:01:42,799 –> 00:01:45,040
معمولاً پوشه هایی مانند پوشه از
64
00:01:45,040 –> 00:01:46,399
تصاویری دارم که هزاران تصویر می شناسید.
65
00:01:46,399 –> 00:01:47,920
هزاران تصویر و من باید
66
00:01:47,920 –> 00:01:50,079
عملیاتی را روی آنها اجرا کنم نتیجه را ذخیره کرده
67
00:01:50,079 –> 00:01:51,759
و بعداً آن نتیجه را تجزیه و تحلیل کنم،
68
00:01:51,759 –> 00:01:52,159
69
00:01:52,159 –> 00:01:53,920
در این مورد، سعی کردم
70
00:01:53,920 –> 00:01:55,439
با نوشتن
71
00:01:55,439 –> 00:01:56,000
تابعی
72
00:01:56,000 –> 00:01:57,840
که یک تصویر را به عنوان یک تصویر می گیرد، آن نوع سناریو را تکرار کنم. ورودی
73
00:01:57,840 –> 00:01:59,439
این فقط یک آرایه numpy است
74
00:01:59,439 –> 00:02:01,360
و سپس از تابعی از
75
00:02:01,360 –> 00:02:02,479
کتابخانه
76
00:02:02,479 –> 00:02:04,399
opencv برای محاسبه نقاط کلیدی و توصیفگرها استفاده میکند و
77
00:02:04,399 –> 00:02:05,920
سپس توصیفگرها را برمیگرداند،
78
00:02:05,920 –> 00:02:07,200
مهم نیست این تابع از
79
00:02:07,200 –> 00:02:08,479
چه چیزی استفاده میشود، فقط به این دلیل که
80
00:02:08,479 –> 00:02:10,399
نسبتاً کند است. تابع
81
00:02:10,399 –> 00:02:12,239
و سپس همانطور که در مستندات نشان داده شده است،
82
00:02:12,239 –> 00:02:14,239
می توانید یک دکوراتور ray.remote قرار دهید،
83
00:02:14,239 –> 00:02:15,040
84
00:02:15,040 –> 00:02:16,560
اما من در واقع می خواهم از هر دو
85
00:02:16,560 –> 00:02:18,400
نسخه معمولی و از راه دور این
86
00:02:18,400 –> 00:02:19,200
تابع
87
00:02:19,200 –> 00:02:20,959
برای آزمایش خود استفاده کنم، بنابراین من از
88
00:02:20,959 –> 00:02:23,200
آن مانند دکوراتور استفاده نمی کنم. واقعاً فقط
89
00:02:23,200 –> 00:02:24,720
تابعی است که یک تابع را به عنوان
90
00:02:24,720 –> 00:02:26,160
ورودی می پذیرد و یک تابع را به عنوان
91
00:02:26,160 –> 00:02:28,879
خروجی می اندازد، بنابراین می توانید دکوراتور را به این صورت اعمال کنید،
92
00:02:28,879 –> 00:02:30,720
همانطور که من در خط 17 نشان می دهم.
93
00:02:30,720 –> 00:02:32,319
94
00:02:32,319 –> 00:02:34,959
بنابراین به عنوان یک آزمایش سریع اگر این
95
00:02:34,959 –> 00:02:36,480
تابع را بر روی تک تصویر an سعی کنید
96
00:02:36,480 –> 00:02:38,879
زمان
97
00:02:42,000 –> 00:02:44,239
آن را بر روی یک تصویر تنها 0.6 ثانیه طول بکشد،
98
00:02:44,239 –> 00:02:46,480
بنابراین اگر من این تابع را روی یک تصویر اجرا می کنم
99
00:02:46,480 –> 00:02:48,720
، فرض کنید پوشه ای از 10 تصویر یا 20
100
00:02:48,720 –> 00:02:50,000
تصویر باشد، می دانید
101
00:02:50,000 –> 00:02:52,480
که زمان شروع به کشیدن است،
102
00:02:52,480 –> 00:02:54,239
به عنوان مثال درست است. در اینجا من آن
103
00:02:54,239 –> 00:02:56,160
تغییر را انجام دادم و اکنون
104
00:02:56,160 –> 00:02:58,560
شش ثانیه طول می کشد تا این تابع را اجرا کنید و همانطور که
105
00:02:58,560 –> 00:03:01,120
من این کار را انجام می دهم
106
00:03:01,120 –> 00:03:03,440
اگر h top را در پایین سمت راست باز کنم، اینجا
107
00:03:03,440 –> 00:03:06,560
دوباره این تابع را اجرا می کنیم
108
00:03:08,400 –> 00:03:10,080
، متوجه خواهید شد که opencv
109
00:03:10,080 –> 00:03:12,239
به طور طبیعی مقداری موازی سازی می کند. بنابراین
110
00:03:12,239 –> 00:03:13,840
من در واقع از
111
00:03:13,840 –> 00:03:15,920
مقدار مناسبی از cpu خود استفاده میکنم، اما نه از همه
112
00:03:15,920 –> 00:03:18,080
آن، بنابراین میتوانیم اولین
113
00:03:18,080 –> 00:03:20,720
افزایش عملکرد کوچک خود را فقط با استفاده از ray
114
00:03:20,720 –> 00:03:21,840
در این یک دستگاه
115
00:03:21,840 –> 00:03:25,680
دریافت کنیم و حداکثر استفاده را از CPU خود ببریم
116
00:03:25,840 –> 00:03:28,400
تا تغییرات اصلی را انجام دهیم. کاری که
117
00:03:28,400 –> 00:03:30,000
باید انجام دهید این است که ابتدا باید مطمئن شوید
118
00:03:30,000 –> 00:03:30,720
119
00:03:30,720 –> 00:03:32,560
که ray مقدار دهی اولیه شده است و سپس
120
00:03:32,560 –> 00:03:34,080
تفاوت با فراخوانی های تابع عادی،
121
00:03:34,080 –> 00:03:35,200
البته همانطور که قبلا ذکر کردم
122
00:03:35,200 –> 00:03:37,120
این است که وقتی تماس از راه دور برقرار
123
00:03:37,120 –> 00:03:38,640
می کنید، خروجی تماس از راه دور را بلافاصله دریافت نمی کنید.
124
00:03:38,640 –> 00:03:39,599
125
00:03:39,599 –> 00:03:42,000
در عوض قولی می گیرید که این کار را خواهید کرد
126
00:03:42,000 –> 00:03:43,280
در یک نقطه یک خروجی دریافت کنید که به
127
00:03:43,280 –> 00:03:44,319
آن آینده می
128
00:03:44,319 –> 00:03:46,480
گویند و برای دریافت مقدار واقعی
129
00:03:46,480 –> 00:03:48,159
باید از این تابع ray.get استفاده کنیم،
130
00:03:48,159 –> 00:03:49,760
بنابراین در حال حاضر کاری با این مقدار انجام نمی دهم
131
00:03:49,760 –> 00:03:51,200
اما در یک
132
00:03:51,200 –> 00:03:53,439
جریان عادی ممکن است آن را در آن ذخیره کنم. یک فایل یا از آن
133
00:03:53,439 –> 00:03:55,120
برای عملیات آینده استفاده کنید،
134
00:03:55,120 –> 00:03:56,560
بنابراین بیایید ببینیم
135
00:03:56,560 –> 00:03:58,480
با فشار دادن این مقدار کمی
136
00:03:58,480 –> 00:04:01,840
به حد مجاز، چقدر زمان میتوانیم برگردانیم،
137
00:04:04,480 –> 00:04:06,400
همانطور که میبینید اکنون
138
00:04:06,400 –> 00:04:08,720
139
00:04:08,720 –> 00:04:11,439
در این مورد خاص همه هستهها را به حداکثر میرساند. در تابعی
140
00:04:11,439 –> 00:04:12,720
که به طور تصادفی انتخاب کردم،
141
00:04:12,720 –> 00:04:14,560
این در واقع یک پیشرفت در یک
142
00:04:14,560 –> 00:04:16,160
ماشین واحد نیست زیرا
143
00:04:16,160 –> 00:04:18,000
opencv موازی سازی خود را
144
00:04:18,000 –> 00:04:20,000
در پس زمینه انجام می دهد و بر خلاف rey
145
00:04:20,000 –> 00:04:21,279
مشمول هیچ سربار سریال سازی نیست،
146
00:04:21,279 –> 00:04:22,240
147
00:04:22,240 –> 00:04:24,320
اما آنچه opencv به شما نمی دهد
148
00:04:24,320 –> 00:04:25,840
و چه ray می دهد.
149
00:04:25,840 –> 00:04:27,600
شما در چندین
150
00:04:27,600 –> 00:04:29,040
ماشین موازی سازی شده اید، بنابراین بیایید آن را تنظیم کنیم
151
00:04:29,040 –> 00:04:30,880
152
00:04:30,880 –> 00:04:32,960
تا برای شروع کار، اولین
153
00:04:32,960 –> 00:04:33,919
کاری که باید انجام دهید این
154
00:04:33,919 –> 00:04:35,840
است که یک سرور را راه اندازی کنید و ما
155
00:04:35,840 –> 00:04:37,759
یک سرور