Механическая обработка сплавов и металлов самая важная сфера любого среднего и большого производства. Современная техника немыслима без использования металлических частей и деталей. Возможность высокоточной обработки металла значительно упрощает изготовление многих изделий и улучшает их качественные характеристики. Именно в сфере металлообработки используются самые лучшие и точные ЧПУ станки и системы.
В каталоге нашей компании представлены металлообрабатывающие станки как бюджетных, так и дорогих высокоточных ЧПУ систем.
Фрезерование дюрали на многошпинлльном станке с автоматической сменой инструмента CNC-STV-ATC
Клише из магния на станке CNC-2030AS5 (CNC-2030AS5P и CNC-2030ASV5P)
Клише из стали на станке CNC-3040ASP (CNC-3040ASP и CNC-3040ASM)
Прессформы, клише, пломбираторы
Фрезеровка дюрали на чпу станке размера 600х600 с автосменой иснтрумента cnc-6060asp
Фрезеровка стали на станке CNC-3040AS
Обработка детали на станке c австоменой инструмента CNC-1218STP
Фрезерование отверстий в алюминиевом профиле с испольщованием поворотного устройства на чпу станке по металлу CNC-STV-4x
Еще больше примеров работ на чпу станках по металлу на нашем Youtube канале. А также на страничках в соц. сетях В Контакте и Инстаграм
Сферы применения оборудования с ЧПУ
«Известия»: в ЧВК «Вагнер» рассказали о расстреле заложников в Артёмовске киевскими боевиками Украинские боевики расстреляли двух мирных жителей в Артёмовске в тот момент, когда бойцы ЧВК «Вагнер» выводили мирных жителей из укрытий после освоб …
Российские бойцы рассказали об успехах в Артемовске Российские войска усилили натиск в Артемовске. За неделю под контроль наших штурмовиков перешел весь центр города. На местной администрации был водру …
Солдат ВСУ обвинили в убийствах мирных жителей в Артемовске Эвакуированный из Артемовска (украинское название — Бахмут) пенсионер обвинил снайперов Вооруженных сил Украины (ВСУ) в убийстве своей жены. …
В Артемовске ВСУ взорвали дома, убив два десятка мирных жителей, включая детей Боевики киевского режима совершили очередное военное преступление — при отступлении из поселка Цветмет на окраине Артемовска (Бахмута) они взорвали ч . ..
Российские бойцы овладели еще тремя кварталами в Артемовске Штурмовые отряды ВС РФ взяли под контроль три новых квартала в Артемовске (украинское название — Бахмут — Прим. ред.). Об этом заявил офи …
Минобороны РФ: российские бойцы освободили еще два квартала в Артёмовске Штурмовые отряды частной военной компании «Вагнер» вытеснили противника из двух кварталов на северо-западе и юго-востоке Артёмовска, сообщило Минобор …
Российские бойцы сражаются за железнодорожный узел в Артемовске Основные бои в Артемовске сосредоточились в западной части города, где находится важный железнодорожный узел, сообщил РИА Новости один из бойцов част …
Российские бойцы взяли под контроль завод АЗОМ в Артемовске Российские силы в воскресенье, 26 марта, полностью взяли под контроль цеха Артемовского завода обработки металлов (АЗОМ) в Артемовске, который в дека …
Российские бойцы ликвидировали двух полевых командиров ВСУ в Артёмовске В городе Артёмовске (украинское название — Бахмут) в ДНР российские бойцы ликвидировали двух полевых командиров ВСУ. Об этом 14 марта сообщается в Te …
Российские силовики предотвратили теракт против мирных жителей в Запорожье Российские силовые структуры пресекли теракт против мирного населения в Запорожской области …
Российские силовики пресекли теракт против мирных жителей Запорожской области Задержаны три пособника ВСУ, вскрыты два схрона с оружием и боеприпасами — Минобороны РФ.The post Российские силовики пресекли теракт против мирных ж …
Как российские бойцы защищают от националистов жителей левого берега Днепра Только за 20 дней марта по Новой Каховке в Херсонской области было больше 150 снарядов. И это только по гражданским объектам. Местные власти говорят …
Российские бойцы рассказали о работе САУ «Гиацинт-С» в ходе СВО Российские военнослужащие с позывными Пряник и Марадона рассказали корреспонденту RT DE Ивану Полянскому о работе САУ «Гиацинт-С» в ходе СВО. …
Российские бойцы рассказали, как армия РФ готовится к наступлению ВСУ Вооруженные силы России (ВС РФ) активно готовятся к отражению контрнаступления украинской армии на разных направлениях фронта спецоперации. Также рос …
Не отступали ни разу: российские бойцы рассказали о ситуации под Кременной Российские танки при поддержке артиллерии пытаются выйти на бетонную дорогу под Кременной — единственную, проходящую через лесной массив. По словам б …
Два мирных жителя погибли при обстреле ДНР украинскими боевиками Украинские боевики обстреляли территорию Донецкой Народной Республики (ДНР), два мирных жителя погибли, еще четверо пострадали. Об этом сообщило в во …
Российские бойцы в окрестностях Кременной рассказали о боях с теробороной и нацбатами ВСУ Российские военные в окрестностях Кременной (ЛНР) отбивают попытки проникновения украинских ДРГ, которые прощупывают позиции ВС России, сообщил военк …
«Артиллерия работает регулярно»: российские бойцы рассказали о ситуации на кременском направлении Как российские бойцы выстраивают «полосу безопасности» вдоль линии соприкосновения в зоне спецоперации — увидел корреспондент &laqu . ..
Сотрудник ЧВК «Вагнер» рассказал о расстреле ВСУ заложников в Артемовске Украинские боевики расстреляли двух мирных жителей в Артемовске (украинское название — Бахмут). Об этом в воскресенье, 16 апреля, корреспонденту «Изв …
Боец «Вагнера» рассказал о расстреле ВСУ заложников в Артемовске Украинские боевики расстреляли двух мирных жителей в Артемовске. Об этом в беседе с «Известиями» рассказали сотрудники ЧВК «Вагнер».По словам одного …
Российские бойцы рассказали о категориях украинских военных, остающихся в городской черте Артёмовска Продолжает поступать информация о ситуации в Артёмовске. Российские подразделения ведут штурмовые действия с нескольких направлений, из кварталов ран …
«Известия»: боец ЧВК «Вагнер» рассказал о расстреле ВСУ заложников в Артемовске Украинские военные расстреляли двух мирных жителей в Артемовске (украинское название — Бахмут), рассказал корреспонденту газеты «Известия» боец ЧВК » . ..
«Известия»: боец ЧВК «Вагнер» рассказал о расстреле ВСУ заложников в Артемовске Украинские военные расстреляли двух мирных жителей в Артемовске (украинское название — Бахмут), рассказал корреспонденту газеты «Известия» боец ЧВК « …
«Известия»: боец ЧВК «Вагнер» рассказал о расстреле ВСУ двух заложников в Артемовске Украинские военные расстреляли двух мирных жителей в Артемовске (украинское название — Бахмут), рассказал корреспонденту газеты «Известия» боец ЧВК » …
СКР расследует расстрел заложников украинскими боевиками в Артемовске Следственный комитет России (СКР) расследует убийство украинскими боевиками двух мирных жителей Артемовска (украинское название — Бахмут), взятых в з …
В Судане из-за боестолкновений погибли 97 мирных жителей Число погибших мирных жителей из-за боевых столкновений в Судане увеличилось до 97, сообщает газета The Guardian. …
Минобороны: бойцы ЧВК «Вагнер» заняли два квартала в Артемовске Штурмовые отряды частной военной компании (ЧВК) «Вагнер» успешно взяли под свой контроль два квартала на северной и южной окраинах Артемовска (Бахмут . ..
Бойцы ЧВК «Вагнер» обнаружили нацистскую атрибутику в Артемовске На оставленных позициях боевиков ВСУ в Артемовске найдено множество запрещенной нацистской атрибутики, среди которой ножи и шевроны. Об этом рассказа …
ВСУ создали специальную артиллерию для атак на мирных жителей Украинские военные создали специальную артиллерию, чтобы обстреливать жилые районы. С таким заявлением выступил мэр Донецка Алексей Кулемзин.Читать д …
ВСУ уличили в намеренном геноциде мирных жителей Донбасса Мэр Донецка Алексей Кулемзин в беседе с РИА Новости рассказал, что, по его мнению, Вооруженные силы Украины (ВСУ) намерено занимаются геноцидом мирны …
ВСУ забросали гранатами мирных жителей в подвале в Бахмуте Global Look Press | Edgar GutiÃ�rrez/Keystone Press AgencyУкраиские националисты забросали гранатами мирных граждан, которые прятались в подвале в Ба …
В Белгородской области с начала СВО погибли 30 мирных жителей Статистику 20 апреля представил глава региона Вячеслав Гладков в ходе отчета о работе областного правительства за 2022 год. …
ВСУ вновь обстреляли мирных жителей Стахановки и Горловки На этот раз украинская артиллерия обстреляла Горловку. По городу выпустили не менее десяти снарядов натовского калибра. Сообщается, что ранения получ …
В Мелитополе при обстреле ВСУ ранены пять мирных жителей При обстреле Мелитополя Вооруженными силами Украины пострадали пять человек, сообщил председатель движения «Мы вместе с Россией» Владимир Рогов.По ег …
В Судане за сутки погибли 30 мирных жителей, еще — 245 ранены В Судане за сутки погибли 30 мирных жителей, еще — 245 ранены, сообщает телеканал «Аль-Арабия» со ссылкой на Комитет врачей Судана. «30 мирных жителе …
В ДНР за сутки при обстрелах ВСУ ранены пять мирных жителей В Донецкой Народной Республике в результате обстрелов со стороны Вооруженных сил Украины (ВСУ) ранения получили пять мирных жителей, передает Telegra …
Пушилин: Эвакуация мирных жителей из Артемовска продолжается Эвакуация мирных людей из города Артемовска продолжается, сообщил в понедельник врио главы ДНР Денис Пушилин, который побывал в городе. По словам Пуш …
При столкновениях в Судане за сутки погибли 30 мирных жителей Хартум. Судан. Боевые столкновения между военными продолжаются в Судане. Только за сутки 18 апреля погибли 30 мирных жителей, 245 ранены, передает &l …
ВСУ за сутки 21 раз обстреливали ДНР, ранены пять мирных жителей Украинские военные за сутки выпустили 85 снарядов по населённым пунктам ДНР, ранены пять мирных жителей. …
При обстреле Донецка пострадали двое мирных жителей Два жителя Донецка получили ранения в результате обстрелов со стороны Украины в воскресенье, заявил глава администрации города Алексей Кулемзин.Мужчи …
В Судане за сутки погибли 30 мирных жителей, еще — 245 ранены В Судане за сутки погибли 30 мирных жителей, еще — 245 ранены, сообщает телеканал «Аль-Арабия» со ссылкой на Комитет врачей Судана. …
В Донецке из-за обстрела ВСУ погибли четверо мирных жителей В результате обстрела ВСУ Донецка погибло не менее четырех человек. Об этом сообщает военный корреспондент РИА Новости. Читать далее …
В ДНР за сутки из-за обстрелов ВСУ ранены пять мирных жителей Представительство ДНР в Совместном центре контроля и координации вопросов, связанных с военными преступлениями Украины, сообщило, что 3 марта ВСУ вып …
«РВ»: бойцы РФ перерезали дорогу жизни ВСУ в Артёмовске и расширяют плацдарм Российские штурмовые подразделения перерезали «дорогу жизни» Вооружённых сил Украины (ВСУ) в Артёмовске (украинское название ― Бахмут). Об этом 20 ап …
Бойцы ЧВК “Вагнер” начали штурм подземного комплекса в Артемовске Тем временем «музыканты» нанесли удар по резервам ВСУ вблизи Артемовска, а ВСУ стягивают в окрестности Артёмовска полученные польские танки Leopard 2 …
Бойцы «Вагнера» за три дня уничтожили несколько единиц бронетехники ВСУ в Артёмовске Во время штурма Артёмовска (Бахмута) в ДНР за последние три дня группа «Вагнера» уничтожила несколько единиц бронетехники противника. …
Бойцы «Вагнера» выбили ВСУ с территории швейной фабрики в Артемовске Группа «Вагнер» штурмом овладела зданием бывшей швейной фабрики имени «8 Марта» в Артемовске, сообщил боец группы «Вагнер», передает РИА Новости …
Бойцы ЧВК «Вагнер» опубликовали видео с завода АЗОМ в Артёмовске Бойцы ЧВК «Вагнер» взяли под контроль одно из помещений Артёмовского завода по обработке цветных металлов (АЗОМ). Один из представителей группы снял …
СМИ: Бойцы «Вагнера» собирают тела украинских военных в Артемовске Бойцы частной военной компании «Вагнер» идентифицируют и собирают тела украинских военных в Артемовске …
Бойцы ЧВК «Вагнер» захватили в Артёмовске здание швейной фабрики Бойцы Группы Вагнера штурмом овладели зданием бывшей швейной фабрики имени 8 Марта в Артёмовске (Бахмуте), сообщает РИА Новости. Отмечается, что здан …
Бойцы «Вагнера» уничтожили несколько единиц бронетехники ВСУ в Артемовске За последние три дня бойцы «Вагнера» в ходе штурма Артемовска уничтожили несколько единиц бронетехники Украинских ВС, сообщает РИА Новости. В беседе с …
Бойцы «Вагнера» овладели двумя кварталами в Артемовске — Минобороны Подразделения ЧВК «Вагнер» при фланговой поддержке российских войск продолжают теснить войска киевского режима в городе Артемовске (он же Бахмут). …
СМИ: Бойцы «Вагнера» взяли под контроль завод «Востокмаш» в Артемовске Частная военная компания «Вагнер» взяла под контроль завод «Востокмаш» в Артемовске в Донецкой народной республике …
«Сущий ад»: Бойцы ВСУ раскрыли в эфире CNN правду о ситуации в Артёмовске Ситуация под Артёмовском стала крайне опасной для ВСУ, и официальный Киев этого пока не признаёт. Об этом сообщает телеканал CNN со ссылкой на украин …
Крышка захлопнулась: бойцы РФ взяли в котел боевиков ВСУ в Артемовске Националисты Незалежной, оставшиеся в Артемовске (украинское название — Бахмут — Прим. ред.) взяты в котел. Об этом сообщил советник врем …
Журналиста с Украины осудили по делу об обстреле мирных жителей в ЛНР Украинский журналист и правозащитник Максим Буткевич вступил в ряды ВСУ в марте прошлого года . ..
В ЛНР сообщили о заселении военных ВСУ в дома мирных жителей под Артемовском Бойцы Вооруженных сил Украины (ВСУ) начали занимать дома и расквартировываться в пригородах Артемовска (украинское название — Бахмут), не эвакуируя м …
В ДНР за сутки пять мирных жителей пострадали в результате обстрелов ВСУ Вооруженные силы Украины (ВСУ) за последние сутки выпустили по населенным пунктам Донецкой Народной Республики (ДНР) 84 снаряда, пострадали пять чело …
В ДНР заявили о гибели более 4,4 тыс. мирных жителей с начала эскалации В Донецкой Народной Республике (ДНР) с начала эскалации конфликта погибли 4483 мирных жителей, в том числе 134 ребенка. Об этом 10 апреля сообщили в …
Командование ВСУ разместило солдат в квартирах мирных жителей у Артемовска Киевское командование размещает солдат в жилых домах мирных жителей нескольких населенных пунктов около Артемовска в ДНР, сообщил подполковник народн . ..
Беженец из Артемовска рассказал о расстрелах бойцами ВСУ мирных жителей Военнослужащие Вооруженных сил Украины (ВСУ) из пулемета расстреливают мирных жителей Артемовска (украинское название — Бахмут), ожидающих прихода ро …
Боец «Вагнера» рассказал об эвакуации мирных жителей из Артемовска Бойцы частной военной компании (ЧВК) «Вагнер» заявили, что почти каждый день эвакуируют мирных жителей из Артемовска, за который идут сражения в Доне …
В результате обстрелов ДНР со стороны ВСУ ранены пять мирных жителей Вооружённые силы Украины за минувшие сутки 26 раз обстреливали населённые пункты ДНР, ранены пять мирных жителей. …
В ДНР заявили о ранении пяти мирных жителей в результате обстрелов ВСУ Вооружённые силы Украины за сутки 26 раз обстреливали населённые пункты ДНР, пострадали пять мирных жителей, сообщает представительство Донецкой наро …
8 317 погибших, 13 892 раненых мирных жителей за год: ООН по конфликту вокруг Украины Управление Верховного комиссара ООН по правам человека опубликовало новую статистику о погибших в результате военного конфликта на территории Украины . ..
СМИ: Более ста мирных жителей погибли в вооруженных столкновениях в Судане Более ста мирных жителей погибли в Судане в результате вооруженных столкновений между армией и Силами быстрого реагирования (СБР) …
Из пригородов Артёмовска эвакуировано в Шахтёрск около 200 мирных жителей Около 200 мирных жителей было эвакуировано из находящихся под контролем российских военных пригородов Артёмовска в Шахтёрск. Об этом 20 февраля расск …
Боец «Вагнера»: ВСУ мешают эвакуации мирных жителей из Артемовска Украинская армия не дает мирным жителям покинуть Артемовск (Бахмут), заявил РИА Новости боец ЧВК «Вагнер» …
Пять мирных жителей ранены в ДНР за сутки в результате обстрелов ВСУ Украинские военные выпустили по населённым пунктам Донецкой Народной Республики 84 снаряда, в результате чего пять человек получили ранения. …
СКР заочно обвинил трех военачальников ВСУ за гибель 500 мирных жителей Следственный комитет России предъявил заочное обвинение первому замначальника Генштаба Вооруженных сил Украины (ВСУ) Игорю Колеснику, замначальника Г . ..
В Мали 19 мирных жителей погибли в результате нападения боевиков По меньшей мере 19 мирных жителей стали жертвами нападения неизвестных боевиков в центральной части Мали, 24 февраля сообщает агентство Reuters со сс …
Российский боец организовал переправу мирных жителей под огнем ВСУ В Минобороны рассказали о новых подвигах, совершенных российскими солдатами в зоне спецоперации. …
В ДНР вынесли приговор боевикам ВСУ, расстрелявшим мирных жителей Мариуполя Верховный суд ДНР вынес приговор украинским военнослужащим Андрею Найдену и Данилу Коленову, обвиняемым в расстреле мирных жителей Мариуполя в марте …
При столкновениях в Судане за день погибли пять мирных жителей При вооруженных столкновениях армии Судана и Сил быстрого реагирования (спецназа) за сегодняшний день погибли пять мирных граждан, 78 ранены, передае …
Мэр Донецка: ВСУ используют западное оружие для обстрела мирных жителей Мэр Донецка Алексей Кулемзин заявил, что все западное оружие, которое поставляется ВСУ, используется для обстрела мирных жителей, передает РИА Новост . ..
Пять мирных жителей погибли в ЛНР за неделю от обстрелов боевиков ВСУ Пять мирных жителей погибли и четверо получили ранения за минувшую неделю в ЛНР в результате обстрелов со стороны украинских террористов. …
На Украине ликвидирован наемник из Франции, пытавший мирных жителей В зоне военной спецоперации на Украине был ликвидирован французский наемник Кевин Давид, принимавший участие в пытках мирных жителей. Об этом сегодня …
Министр Верещук призвала мирных жителей эвакуироваться из Бахмута Вице-премьер Украины Ирина Верещук заявила, что в украинском Бахмуте (Артемовск) остаются 6 тыс. мирных жителей из 71 тыс. Она призвала граждан срочн …
В Нидерландах пришли в ужас из-за обстрела ВСУ мирных жителей на Пасху Член голландской партии «Форум за демократию» (FVD), депутат Марсель де Граф назвал обстрел ВСУ Донецка в такой великий праздник, как Пасха, настоящи …
РИА Новости: бойцы ЧВК «Вагнер» собирают тела украинских военных в Артёмовске Бойцы Группы Вагнера идентифицируют и собирают тела украинских военных в Артёмовске (Бахмуте). …
Бойцы ЧВК «Вагнер» установили полный контроль над заводом АЗОМ в Артёмовске Штурмовые подразделения ЧВК «Вагнер» полностью контролируют Артемовский завод обработки металлов (АЗОМ), который, согласно заявлениям Киева, должен б …
«РВ»: бойцы ЧВК «Вагнер» перерезали «дорогу жизни» Вооруженных сил Украины в Артемовске Бойцы частной военной компании (ЧВК) «Вагнер» перерезали «дорогу жизни» Вооруженных сил Украины (ВСУ) в Артемовске (Бахмут). Об этом сообщает Telegra …
РИА Новости: бойцы «Вагнера» уничтожили несколько единиц бронетехники ВСУ в Артемовске Во время штурма Артемовска (украинское название – Бахмут) за последние три дня группа «Вагнера» уничтожила несколько единиц бронетехники Вооруженных …
Бойцы ЧВК «Вагнер» практически полностью зачистили промзону в Артемовске — Пушилин Российские подразделения практически полностью зачистили промзону завода по обработке цветных металлов (АЗОМ) в Артемовске (Бахмуте). …
МО: оставшиеся в Артёмовске бойцы ВСУ разрушают объекты инфраструктуры и жилые дома Оставшиеся в Артёмовске (Бахмуте) бойцы ВСУ, отступая, целенаправленно разрушают объекты инфраструктуры и жилые дома для замедления продвижения ВС Ро …
Бойцы «Вагнера» ликвидировали в Артемовске участника поджога Дома профсоюзов В Артемовске ликвидирован украинский военный Александр Станков, который участвовал в поджоге Дома профсоюзов в мае 2014 года …
РИА Новости: бойцы ЧВК «Вагнер» собирают тела украинских военных в Артемовске Бойцы частной военной компании «Вагнер» идентифицируют и собирают тела погибших украинских военных в Артемовске. Об этом сообщили корреспонденты РИА …
Бойцы ЧВК «Вагнер» продвинулись вплотную к железнодорожной станции «Бахмут-1» в Артемовске В Артемовске (Бахмуте) силы ЧВК «Вагнер» продолжают уверенно продвигаться к западной части города, оттесняя украинские формирования и расширяя зону к . ..
Украинский пленный заявил, что бойцы ВСУ сдаются в Артёмовске из-за отсутствия поддержки Военные ВСУ сдаются в Артёмовске (Бахмуте) из-за отсутствия поддержки и недостатка боеприпасов. …
Бойцы ЧВК «Вагнер» заявили, что находят атрибуты с нацистской символикой в Артемовске Боец ЧВК «Вагнер» рассказал РИА Новости об атрибутах с нацистской символикой, которые группа часто находит на украинских позициях в Артемовске (украи …
Больше видео
Metal Performance Shaders Graph — это вычислительный движок, который помогает создавать, компилировать и выполнять настраиваемые многомерные графики для линейной алгебры, машинного обучения, компьютерного зрения и обработки изображений. Узнайте, как MPSGraph может ускорить популярную платформу TensorFlow с помощью серверной части Metal для продуктов Apple. Узнайте, как добавить поток управления к графам, управлять компиляцией графов для достижения оптимальной производительности и использовать операции MPSGraph для ускорения самых сложных вычислительных приложений, написав всего несколько строк кода.
Скачать
Привет. Я Сахарш Оза. Я работаю в команде разработки программного обеспечения GPU в Apple. Сегодня мы с моей коллегой Юлией Пилипив поговорим о том, что нового в Metal Performance Shaders Graph. Начнем. MPS — это библиотека высокопроизводительных примитивов на основе металла с ускорением на графическом процессоре для различных областей, таких как обработка изображений, линейная алгебра, трассировка лучей и машинное обучение. Команда MPS оптимизирует ядра Metal, чтобы обеспечить наилучшую производительность на каждом оборудовании на различных платформах Apple. В прошлом году мы представили платформу MPSGraph, граф вычислений общего назначения для графического процессора. Он поддерживается в macOS, iOS, iPadOS и tvOS, как и платформа MPS. Пожалуйста, посмотрите нашу прошлогоднюю сессию, чтобы получить больше вводных сведений о MPSGraph. Давайте посмотрим на повестку дня. Нам есть что покрыть. Мы обсудим вывод машинного обучения и ускорение обучения с помощью MPSGraph. Мы познакомим вас с некоторыми новыми интересными операциями MPSGraph. Мы представим вам новые способы управления компиляцией в MPSGraph. И, наконец, мы рассмотрим все новые возможности потока управления MPSGraph. Я хотел бы представить мою коллегу Юлию, которая поделится некоторыми интересными обновлениями для логического вывода и ускорения обучения. Спасибо, Сахарш. Привет. Я Юлия Пилипив. Я являюсь частью команды программного обеспечения GPU в Apple. Сегодня я хочу поделиться улучшениями, которые мы сделали для повышения производительности обучения и логических выводов на графическом процессоре.
Давайте прямо в это. Платформа MPSGraph была принята платформами машинного обучения более высокого уровня, такими как Core ML и TensorFlow, для ускорения GPU. В этом году мы еще больше оптимизировали MPSGraph, объединив улучшения ядра и внедрение сшивания. Это привело к значительному приросту производительности сред машинного обучения, использующих MPS. Давайте подробнее рассмотрим новый плагин Metal для TensorFlow. TensorFlow — популярная обучающая платформа для машинного обучения, а графические процессоры — преобладающие ускорители. В этом году мы разработали новый плагин Metal с использованием интерфейса TensorFlow PluggableDevice, выпущенного в TensorFlow 2.5. Это привносит мощь Metal в TensorFlow с использованием MPS и MPSGraph. Это позволяет нам обучать любую модель машинного обучения на графических процессорах платформы Mac без модификаций. Теперь давайте посмотрим на один из них в действии. Для этой демонстрации я буду использовать среду Jupyter. В моей системе M1 установлена последняя доступная версия TensorFlow.Здесь я определяю популярную модель машинного обучения ResNet50, которая широко используется для классификации изображений, обучения переносу и многого другого.
Текущая модель использует стандартный набор данных ImageNet с размером изображения 224 на 224.
Как видите, текущее ETA для первой эпохи, работающей на ЦП, составляет около 20 минут. Позвольте мне установить плагин TensorFlow Metal, который мы представили ранее, и посмотреть, сможем ли мы добавить немного ускорения в текущую сеть. Для этого я использую pip install tensorflow-metal…
возвращаясь к той же модели ResNet50, которую мы использовали раньше.
Только на этот раз вы можете видеть, что зарегистрировано новое устройство GPU. Это устройство GPU, которое мы представили как часть платформы TensorFlow с помощью плагина Metal.
Все обратные вызовы и определение сети остаются без изменений.
Теперь давайте подробнее рассмотрим другие сети. Здесь мы показываем производительность ключевых тестов обучения машинному обучению относительно ЦП. Как видите, у нас хорошее ускорение во всех тестах, до восьми раз быстрее на M1 MacBook Pro.
Установить новый плагин Metal для TensorFlow очень просто. После установки базового TensorFlow с помощью pip install tensorflow-macos вы можете установить плагин Metal с помощью pip install tensorflow-metal. Плагин Metal будет доступен в официальном репозитории пакетов Python на pypi.org. Подробную информацию о настройке и установке среды см. в разделе Metal Developer Resource. Вот и все для TensorFlow. Далее поговорим об ускорении логического вывода в Core ML.
Core ML — это платформа логического вывода Apple для машинного обучения. Мы также увидели значительное улучшение производительности Core ML с помощью MPSGraph. Здесь мы показываем ускорение вывода ключевых классов сетей машинного обучения на M1. Мы получаем двукратное ускорение в BERT, канонической сети-преобразователе, используемой для приложений NLP. ResNet50, играющий центральную роль в приложениях компьютерного зрения, в предыдущих выпусках был настроен для путей текстур. Это дополнительное улучшение производительности на 16% благодаря нашему новому буферному серверу через MPSGraph. Эти улучшения производительности в Core ML и TensorFlow связаны с улучшениями производительности примитивов MPS, таких как Convolution2D. Здесь мы показываем ускорение Convolution2D на макетах данных NHWC и NCHW, которые используются для обучения и вывода соответственно. Вот и все улучшения в выводе и обучении. Далее вернемся к Saharsh, чтобы узнать больше о новых операциях в MPSGraph. Спасибо, Юлия. Теперь мы рассмотрим новый набор операций, поддерживаемых MPSGraph.
Мы поддерживаем множество операций над MPSGraph, от нескольких вариантов сверток и редукций до всех основных математических операций, которые могут вам понадобиться в ваших вычислительных графах. В этом году мы добавили специальные операции, чтобы вы могли делать еще больше с MPSGraph. Мы представим три новых примитива: зависимость управления, оператор трафарета и оператор сбора. Во-первых, мы рассмотрим зависимость элемента управления. Зависимость управления необходима для явного упорядочения операций в графе. Чтобы понять это, давайте формально определим операцию графа. Операции в графе соединяются друг с другом через три типа ребер: входные тензоры, которые представляют, какие тензоры действуют как входные данные для операции, выходные тензоры, которые создаются самой оперой, и, наконец, особый вид ребер, называемый управлением. зависимость. Они должны выполняться перед текущей операцией, даже если сама текущая операция от нее не зависит. Этот API также предлагает удобный способ предотвратить оптимизацию операций с помощью MPSGraph. Это необходимо для реализации слоев машинного обучения, таких как пакетная нормализация. Давайте посмотрим это на практике. Пакетная нормализация — это стандартный уровень, используемый в обучении машинному обучению, чтобы сделать сеть более стабильной и быстрее сходиться.
Здесь мы видим вычислительный граф для пакетной нормализации, который используется для обучения. Первым шагом является вычисление среднего значения и дисперсии. Они, в свою очередь, используются для обновления текущего среднего значения и текущей дисперсии, которые необходимы для логического вывода. Однако результат обучающего графика не требует этих переменных, поэтому MPSGraph может оптимизировать их. Мы можем решить эту проблему, явно расположив их перед окончательным оператором нормализации, используя управляющие зависимости. Давайте рассмотрим простой пример с некоторым кодом, который показывает, как вы можете использовать этот API.На этом графике показан показатель степени и оператор присваивания. Оператор присваивания не используется ничем другим в графе. Таким образом, это может быть оптимизировано. Один из способов решить эту проблему — явно установить assign в качестве targetOperation. Однако это требует от разработчика глобального отслеживания зависимостей по графу. Вместо этого с помощью нового API зависимостей элементов управления вы можете сделать операцию экспоненты зависимой от присваивания. Это устраняет необходимость иметь targetOperation, а также гарантирует, что граф не оптимизирует его. Далее мы увидим это в коде.
Сначала мы определяем оператор, от которого зависит показатель степени. Затем мы создаем зависимый блок, который определяет оператор экспоненты. Наконец, мы вызываем API запуска на этом графике. Обратите внимание, что никакие targetOperations не нужно отслеживать глобально. Вот и все, что касается зависимости управления. Теперь поговорим об операторах трафарета.
Операция трафарета является обобщением операторов скользящего окна, таких как свертка изображения. Эти операторы необходимы в методах конечных элементов, машинном обучении и приложениях для обработки изображений. Здесь мы видим пятиточечный 2D-шаблон, обычно используемый для реализации операций Лапласа. Показанный здесь оператор шаблона можно применять и к более высоким измерениям, как показано на этой трехмерной схеме шаблона с семью точками. Давайте поближе познакомимся с оператором. Для каждого выходного значения он вычисляет взвешенное сокращение по окну трафарета на входном тензоре, как показано. Оператор поддерживает различные режимы сокращения, включая argmin/argmax, и различные режимы заполнения, включая отражение и clipToZero. MPSGraph позволяет сшивать ядра MPS для оптимальной производительности. Благодаря поддержке сшивания оператор трафарета позволяет вам выражать сложные математические операции в одном запуске ядра. Давайте посмотрим один такой пример в действии. Нормализация локального ответа — это операция pytorch, используемая для нормализации в измерении канала. Это очень просто реализовать с помощью новой операции трафарета. Здесь мы видим график для этой техники нормализации. Мы видим, что это просто поэлементные операции вокруг операции трафарета. Без новой операции потребуется несколько отправок. Теперь, поскольку операция трафарета поддерживает сшивку, весь этот граф можно запустить за одну отправку. Вот и все, что касается оператора трафарета. Далее давайте взглянем на улучшения в операциях сбора.
В этом году в MPSGraph были добавлены новые операции сбора данных. Это позволяет эффективно копировать фрагменты произвольного размера в несмежных участках памяти. Концептуально мы собираем значения из мест, отмеченных синим цветом, из куска памяти. Эти слои сбора позволяют эффективно реализовать встроенный поиск и динамическое копирование матрицы. GatherND — это мощное расширение операции сбора. В то время как обычная сборка поддерживает линейную индексацию, операция collectND позволяет использовать N-мерную индексацию. Это позволяет легко копировать данные из любого места N-мерного ввода. Входными данными для этой операции является вектор координат, и каждая координата может иметь ранг входного тензора. Любые размеры, не указанные в координатах, приводят к копированию среза. Мы можем просмотреть пример набора срезов строк из трехмерного тензора. В этом примере индексы задают две координаты, соответствующие матрице и координатам строки. Без третьей координаты для индекса столбца этот collectND будет копировать целые строки. Результирующий тензор представляет собой двумерную матрицу строк, собранных из входной матрицы. GatherND может представлять почти любую форму операции сбора данных и обеспечивает отличную производительность. Например, давайте посмотрим, как мы можем реализовать встроенный поиск с использованием операций сбора.
Поиск вложений — это обычная операция, используемая для поиска векторов вложений для предоставленного набора входных объектов. Обычно этот уровень используется в сетях языковой обработки, где генерируется матрица внедрения, связывающая каждое слово в словаре с вектором внедрения. Идентификатор слов в словаре можно использовать в качестве индексов для операции сбора, а матрица вложения — это наш входной тензор. Мы хотели бы получить соответствующие строки для каждого идентификатора слова, что мы можем легко сделать, используя слой сбора. Мы указываем только одну координату, поэтому для каждого входного слова будет копироваться вся строка. Результирующий тензор представляет собой двумерную матрицу вектора вложения каждого входного слова вдоль строк. Это все, что касается новых операций MPSGraph, которые мы представили в этом году. Теперь поговорим об API компиляции. В этом году мы представляем новый API MPSGraphExecutable. Этот API компиляции повышает производительность двумя способами. Во-первых, это дает разработчику контроль над тем, когда компилировать график. Во-вторых, это позволяет сократить количество вызовов компиляции за счет отложенного вывода типов. Теперь давайте подробнее рассмотрим каждый. В прошлом году мы предоставили действительно удобный API для определения и выполнения MPSGraph. Под капотом, когда в первый раз была запрошена оценка, MPSGraph вызвал компиляцию для входных типов и внутренне создал исполняемый файл. Для любых последующих исполнений MPSGraph незаметно кэшировал этот исполняемый файл, чтобы гарантировать, что стоимость компиляции не будет оплачена снова. Теперь у пользователей есть возможность вызвать компиляцию заранее, чтобы вы могли выбрать временную шкалу для компиляции. В скомпилированном исполняемом файле вы можете вызвать run непосредственно для MPSGraphExecutable. Это дает пользователю контроль над тем, когда граф компилируется, а также возможность кэшировать скомпилированный исполняемый файл, чтобы вы могли получить еще большую производительность. Давайте посмотрим на это в коде. Здесь у нас есть простой график для добавления двух тензоров. Теперь для компиляции мы предоставляем типы для каналов и целевых тензоров вместе с операциями. Мы получаем скомпилированный граф и исполняемый файл. И метод оценки так же прост. Мы предоставляем очередь команд Metal и наши входные тензорные данные. Таковы основы составления графика MPS. Далее поговорим о том, как уменьшить количество вызовов компиляции с помощью отложенного вывода типов. Вывод типа — это этап компиляции, на котором MPSGraph должен определить формы тензоров, если они не указаны пользователем. На этом графике мы выполняем матричное умножение двух двумерных тензоров. Показаны формы входных тензоров. Однако выходной тензор имеет неизвестную форму.
По завершении прохода вывода типа форма выходного тензора определяется на основе входных данных и типа операции. В стандартных нейронных сетях входы в сеть не всегда имеют одинаковый размер. Для обработки естественного языка предложения или последовательности могут быть разной длины. Что касается CNN, мы видим, что для оценки поступают изображения разного размера. До обновлений компиляции в этом году для каждого изображения нового размера вызывалась компиляция для определения типа всего графа. Теперь, имея контроль над компиляцией, вы, разработчик, можете вызывать компиляцию с отключенным проходом определения типа. Это может сэкономить десятки или сотни секунд времени компиляции на каждой итерации и получить наилучшую производительность.
Среда выполнения MPSGraph будет выводить типы вовремя во время кодирования и без проблем заставит все работать. Это компромисс между экономией времени компиляции и получением наиболее оптимального графика. Давайте посмотрим, как это можно использовать в приведенном ранее примере кода.
Отключение прохода определения типа может быть достигнуто путем установки дескриптора компиляции, как показано. Вот и все API компиляции. Наконец, давайте поговорим о новых API потока управления MPSGraph. Эти API позволяют динамически отправлять операции на основе тензоров, предварительно оцененных графом. Это часто встречается в таких приложениях, как пакетная нормализация и рекуррентные нейронные сети. Давайте посмотрим, как «цикл while» может быть реализован с помощью MPSGraph сегодня без нового API.
Сначала мы создаем граф, вычисляющий предикат. Затем предикат оценивается на ЦП посредством явной синхронизации памяти. Если предикат истинен, ранее созданный граф повторно выполняется с новыми входными данными. В противном случае, если предикат ложный, цикл завершается, и создается и выполняется второй MPSGraph для использования результата. Благодаря новому API потока управления все эти шаги можно запустить как часть одного выполнения MPSGraph.
Это более удобно реализовать, поскольку вам не нужно вводить явные примитивы синхронизации памяти. Теперь давайте посмотрим, как это может быть потенциально более эффективным. Здесь мы видим временную шкалу потока управления без нового API. Кодируем первое ядро на CPU. Как только ядро будет завершено, мы должны синхронизировать память, чтобы прочитать результат. Это потенциально неэффективно, так как ЦП должен ждать завершения работы графического процессора. Точно так же GPU также должен дождаться завершения синхронизации CPU и последующего кодирования. Это происходит в каждой итерации. Теперь давайте посмотрим на преимущества использования нового API MPSGraph. Мы должны выполнить только один вызов CPU encode. Поскольку предикат оценивается на временной шкале графического процессора, не возникает дополнительных затрат на синхронизацию, и ядра могут запускаться без каких-либо пузырей.
Теперь давайте посмотрим, что представляют собой новые API.
Мы добавили три новых API потока управления: if/else, циклы for и циклы while. Начнем с примитива if/else. Мы все знакомы с этим. В зависимости от предиката выполняются разные пути кода. Нам предоставляется логический предикат вместе с блоком кода для условий «если» и «иначе». Если этот предикат истинен, мы выполняем блок кода then. В противном случае, если оно ложно, выполняется ветвь else. Наличие операции if/else очень полезно в нейронных сетях. Одно каноническое использование — это операция пакетной нормализации, которая ведет себя по-разному при обучении и выводе. С логическим значением isTraining у нас может быть один график для представления обоих вариантов нормализатора. Давайте посмотрим, как настроить ветку if/else в коде.
Возьмем очень простой пример двух входных скалярных тензоров. Если первый тензор меньше второго, мы возвращаем сумму операций. В противном случае мы возвращаем разницу. Сначала мы вычисляем предикат и передаем его в API. Затем, когда предикат истинен, мы вычисляем блок then и добавляем тензоры. Наконец, когда предикат ложен, мы вычисляем блок else и вычитаем тензоры. Далее давайте посмотрим, как реализовать цикл for.
Примитив цикла for перебирает набор операций определенное количество раз. Это распространено в рекуррентных нейронных сетях, где нам приходится перебирать последовательности разной длины во время обучения. Нам нужно указать количество итераций цикла for. Индекс инициализируется равным 0 и сравнивается с числом итераций на каждой итерации цикла. Если он меньше, чем numberOfIterations, мы выполняем тело цикла for и увеличиваем индекс на 1.
Когда индекс равен или превышает число итераций, мы завершаем цикл. Давайте посмотрим, как реализовать это в коде.
Допустим, мы хотели реализовать очень простой пример. Мы инициализируем переменную результата некоторым входным значением. Затем мы выполняем цикл четыре раза, каждый раз умножая результат на другое входное значение. Во-первых, мы создаем два тензора графа. Выходной тензор будет инициализирован как input0. На каждой итерации этот тензор будет умножаться на input1. Затем мы устанавливаем numberOfIterations равным 4, чтобы мы могли выполнить цикл четыре раза, от индекса 0 до индекса 3. Затем мы создаем тело цикла for. Это делается путем создания замыкания, представляющего одну итерацию. Каждой итерации передается индекс текущей итерации, а также выходные данные предыдущей итерации. Затем мы обновим результат и вернем его для передачи на следующую итерацию. Наконец, мы передаем все эти аргументы в API цикла for в графе. Обратите внимание, что iterationArguments тела инициализированы тензором input0. Вот и все для цикла. Теперь давайте посмотрим на API цикла while.
Этот примитив выполняет набор операций при выполнении условия. Нам нужно предоставить два блока кода для использования этого API. В первом блоке условие проверяется предикатом. Когда предикат истинен, выполняется тело цикла while в блоке after. Это пересчитывает предикат. Затем MPSGraph использует этот предикат в следующей итерации предыдущего блока. Если оцениваемое условие ложно, он выходит из цикла. API также позволяет реализовать цикл do-while, поменяв местами блоки кода оценки тела и условия. Допустим, мы хотели реализовать действительно простой пример. Мы инициализируем переменную результата некоторым входным значением. Затем мы будем умножать результат на множитель каждый раз в цикле, пока не превысим порог. Во-первых, мы определяем блок кода, который будет оценивать предикат, используя результат предыдущей итерации. Он также сохраняет результаты предыдущей итерации в NSArray returnTensors. Этот массив будет использоваться в качестве входных данных для следующей итерации, если предикат истинен, и использоваться в качестве окончательного результата, если предикат ложен. Затем мы определяем тело цикла while, в котором перемножаются тензоры. Продукт возвращается для чтения блока условий.
Наконец, мы передадим все эти аргументы в API цикла while, как показано. Обратите внимание, что аргумент initialInputs используется в первой итерации блока before.
Вот и все для циклов while. Далее мы увидим, как это можно использовать в реальном приложении. Композиция изображения — это обычная утилита для редактирования изображений. Здесь объект имплантируется в целевое изображение. Мы начинаем с исходного изображения и фонового изображения, как показано на рисунке. Далее мы создаем маску на исходном изображении. Разместим эту маску исходного изображения прямо на фоне. Это выглядит не очень хорошо, так как мы можем четко видеть края исходного изображения. С помощью композиции изображения мы хотим сгладить эти края. Распространенным способом достижения этой цели является сочетание краевого фильтра Лапласа с итеративным линейным решателем. Теперь давайте посмотрим на детали. Здесь мы видим конвейер, необходимый для выполнения композиции изображения с помощью MPSGraph. Мы начинаем с наших входных тензоров, фонового изображения, исходного изображения и маски объекта. Затем мы используем итеративный линейный решатель в сочетании с детектором границ Лапласа. Результатом этого набора операций является составное изображение со сглаженными краями. Давайте взглянем на краевой фильтр Лапласа. Реализация краевого фильтра Лапласа включает оконное уменьшение исходного изображения с набором весов. Оператор трафарета используется для реализации этого, как показано. Используя этот оператор, мы можем видеть края исходного объекта. Вычисленные здесь ребра будут использоваться в качестве входных данных для линейного решателя. Далее, давайте взглянем на линейный решатель.
Мы начинаем с фонового изображения и загружаем его в линейный решатель. Решатель обновляет это изображение, и результат впоследствии считывается обратно. Как мы видим, это итеративный процесс. По мере выполнения итераций изображение решения улучшается, пока мы не достигнем идеального перехода по краям. Цикл завершается, когда ошибка становится ниже установленного пользователем допуска. Для этого требуется цикл while. Теперь для реализации этого можно использовать API потока управления MPSGraph. Теперь давайте посмотрим на демо. Мы реализовали утилиту компоновки изображений, используя MPSGraph в качестве приложения для iPad Pro.
Мы начинаем с исходного изображения вверху и целевого изображения внизу. Мы будем клонировать объекты из источника в цель. Первое, что нам нужно сделать, это нарисовать маску вокруг коровы, которую мы хотим переместить.
Посмотрим, как это выглядит на простом клоне.
Выглядит не очень хорошо, так как видны шероховатости. Теперь давайте попробуем технику композиции изображения, которую мы только что описали. Мы начнем с установки начального решения для фонового изображения. Давайте запустим это примерно для 50 итераций.
Очевидно, образ решения еще не сошелся. Давайте запустим его еще примерно на 50 итераций.
Это выглядит более естественно, так как края сглажены. Простота программирования с помощью MPSGraph упрощает экспериментирование с различными методами. Инициализация решателя с клонированным изображением вместо фонового изображения может привести к более быстрой сходимости. Мы можем включить этот режим инициализации, переключив этот переключатель. Давайте посмотрим на это в действии, снова установив счетчик итераций на 50 и сбросив его до наивного клона.
Теперь перезапустим решатель. Мы видим, что изображение решения после 50 итераций выглядит довольно хорошо. Поскольку мы уже начинаем с исходного объекта, мы также наблюдаем меньшее кровотечение по краям. Отлично. Но на самом деле мы хотим автоматизировать сходимость на основе устойчивости к ошибкам. Для этого потребуется цикл while, который мы включим с помощью этого переключателя. Мы реализовали это с помощью нового API MPSGraph. С помощью этого ползунка можно управлять допустимой ошибкой. Мы установили его на 0,1, как показано. Давайте сбросим это обратно к наивному клону.
Теперь запускаем решатель. С помощью этого цикла while мы сходимся к изображению решения примерно за 80 итераций, и мне не нужно указывать количество итераций. А теперь давайте повеселимся, клонируя других животных на этот фон. Давайте попробуем этого милого щенка.
Хорошо, трассировка завершена. Я думаю, что это будет отлично смотреться в правом нижнем углу этого изображения.
Может, следующей птичкой попробуем.
Это будет хорошо смотреться в правом верхнем углу фона. Новый фон со всеми этими изображениями выглядит довольно аккуратно. Вот и все для демо.
Итак, мы показали, как внедрение MPSGraph привело к поразительному повышению производительности для CoreML и TensorFlow. Вывод теперь в два раза быстрее. Мы представили новые полезные вычислительные примитивы, в том числе оператор шаблона, который позволит использовать широкий спектр приложений.
Мы продемонстрировали новую гибкость компиляции, которую предлагает MPSGraph. Это уменьшит задержку в сетях логического вывода.
И, наконец, мы продемонстрировали все новые возможности потока управления MPSGraph. Этот API является ключом к реализации нескольких приложений линейной алгебры в дополнение к сетям машинного обучения.
Мы рады видеть, как вы воспользуетесь преимуществами этих функций. Спасибо и удачной WWDC 2021. [музыка оптимистичная]
Ищете что-то конкретное? Введите тему выше и сразу переходите к интересным материалам.
Смотреть сессии о металле с WWDC22
Metal поддерживает аппаратное ускорение графики на платформах Apple, предоставляя API с низкими издержками, богатый язык затенения, тесную интеграцию между графикой и вычислениями, а также беспрецедентный набор инструментов профилирования и отладки графического процессора. Metal 3 представляет мощные функции, которые помогают вашим играм и профессиональным приложениям использовать весь потенциал Apple Silicon. Теперь вы можете отображать графику высокого разрешения за меньшее время, быстрее загружать ресурсы, обучать сети машинного обучения с помощью графического процессора и т. д.
Рендеринг сложных сцен за меньшее время на кадр с помощью высокопроизводительного масштабирования и сглаживания. Выберите комбинацию временных или пространственных алгоритмов, чтобы повысить производительность.
Оптимальная передача данных активов в текстуры и буферы Metal непосредственно из хранилища с использованием асинхронного ввода-вывода.
Компилятор может генерировать двоичные файлы графического процессора во время сборки проекта, чтобы исключить компиляцию шейдеров в приложении, помогая играм повысить производительность и сократить время загрузки.
Этот новый конвейер геометрии заменяет вершинные шейдеры двумя новыми этапами шейдеров — объектным и сетевым, — которые обеспечивают более гибкую отбраковку и выбор уровня детализации, а также более эффективное затенение и генерацию геометрии.
Новый бэкенд Metal в PyTorch версии 1.12 обеспечивает высокопроизводительное обучение с ускорением на GPU с использованием MPS Graph и примитивов Metal Performance Shaders.
Начать
Последние достижения в трассировке лучей Metal означают, что на построение структур ускорения тратится меньше времени графического процессора, такие операции, как отсечение, могут быть перенесены на графический процессор для снижения нагрузки на процессор, а пересечение и затенение могут быть оптимизированы с помощью прямого доступа к примитивам. данные.
Просмотрите последнюю документацию, включая справочник по API и статьи.
Добавление функциональности Metal в графические приложения, игры и игровые движки с использованием заголовков Metal C++ с низкими издержками.
TensorFlow-Metal PluggableDevice добавляет улучшения в обучение машинному обучению за счет новых операций, ускоренных на графическом процессоре, пользовательских операций и поддержки распределенного обучения.