Эпоха ускорения графического процессора: как использовать CuPy, чтобы ваш код Python работал правильно?
Эпоха ускорения графического процессора: как использовать CuPy, чтобы ваш код Python работал правильно?

У вас тоже такое ощущение: код Python, который вы пишете, очень краток, и NumPy очень удобно использовать для обработки данных, но когда вы его запускаете, он медленный, как черепаха? Особенно, когда вы имеете дело с огромным набором данных, большую часть дня вам придется просто ждать, пока появятся результаты. Фактически, я делал это раньше, пока не обнаружил CuPy, инструмент ускорения графического процессора, который может ускорить работу NumPy.

Вы можете подумать: «Ускорение графического процессора? Это звучит очень высококлассно, и оно не будет использоваться в моей повседневной обработке данных, не так ли?» конфигурация. Независимо от того, занимаетесь ли вы машинным обучением, глубоким обучением или ежедневной обработкой данных, использование CuPy для ускорения ваших кодов NumPy и SciPy может напрямую повысить эффективность вашей работы в несколько раз.

Сегодня я познакомлю вас с CuPy и посмотрю, как он может перенести ваш знакомый код NumPy на графический процессор и повысить производительность.

Что такое CuPy?

Проще говоря, CuPy — это библиотека, которая хорошо совместима с API NumPy и специально используется для передачи операций NumPy, которые вы обычно выполняете на ЦП, для выполнения на графическом процессоре. Вы можете думать о CuPy как о «расширенной версии» NumPy. Он добавит «Турбо-режим» к вашему обычному коду и будет использовать мощные возможности параллельных вычислений графического процессора для непосредственного ускорения.

Приведите пример,Если вы обычно используете NumPy для матричных операций,Например, выполнять такие операции, как сложение и умножение больших матриц.,Эти вычисления могут занять несколько секунд или даже больше на процессоре. Но если вы используете CuPy,Просто введите кодnumpyЗаменить наcupy,Та же операция может занять всего несколько сотен миллисекунд!

Говоря более интуитивно, если у вас в руках карта, вам нужно найти кратчайший путь из точки А в точку Б. Если вы работаете с NumPy, это может быть эквивалентно выполнению всего процесса пешком, тогда как CuPy похож на оснащение вас спортивной машиной: скорость сразу возрастает, и эффективность сразу возрастает;

Почему стоит выбрать CuPy?

Поскольку CuPy настолько мощный, в чем конкретно его преимущества? Мы можем говорить об этом со следующих сторон:

1. Легко начать, почти не нужно менять код.

Что мне больше всего нравится в CuPy: если вы знакомы с NumPy,По сути, вы можете легко переключиться на CuPy. Его API почти такой же, как у NumPy.,Это означает, что вам не нужно заново изучать новые функции.,Нет необходимости вносить значительные изменения в существующий код.。Проще говоряimport numpy as npЗаменить наimport cupy as cp,тогда поставьnpИзменить наcp,Ваш код может работать непосредственно на графическом процессоре.

В качестве простого примера предположим, что у вас есть следующий код NumPy:

Язык кода:javascript
копировать
import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a + b
print(c)

Теперь, если вы хотите использовать CuPy для ускорения, вам нужно внести только следующие изменения:

Язык кода:javascript
копировать
import cupy as cp

a = cp.array([1, 2, 3])
b = cp.array([4, 5, 6])
c = a + b
print(c)

Это так просто! Более того, он не только поддерживает основные операции с массивами, такие как умножение матриц, преобразование Фурье, операции линейной алгебры и даже некоторые вычислительные операции в глубоком обучении, CuPy прекрасно с ними справляется.

2. Скачок производительности, особенно подходит для обработки больших данных.

Если вы занимаетесь машинным обучением, глубоким обучением или задачами, требующими обработки крупномасштабных наборов данных, то CuPy определенно станет вашим «секретным оружием». Расчеты NumPy основаны на процессоре, который имеет ограниченные многоядерные возможности и часто не способен справиться с большими объемами данных. CuPy может вызывать тысячи ядер графического процессора для параллельной обработки, что значительно сокращает время вычислений.

Исследования показали, что при использовании CuPy для обработки крупномасштабных матричных операций на графическом процессоре производительность можно повысить в десятки, а то и сотни раз! Например, если вы выполняете операцию умножения матрицы, содержащей 10 миллионов строк, это может занять несколько минут на ЦП, но всего несколько секунд на CuPy.

3. Полная интеграция с SciPy для бесперебойной работы научных вычислений.

CuPy не только совместим с NumPy, но также поддерживает многие функции SciPy. SciPy — важный инструмент научных вычислений Python, предоставляющий множество расширенных математических функций и операций, таких как интеграция, оптимизация, интерполяция и т. д. Если вы привыкли использовать SciPy для решения сложных математических задач, то CuPy может легко взять на себя эти операции и продолжать пользоваться эффектом ускорения графического процессора.

Например, чтобы использовать SciPy для выполнения операций свертки при обработке сигналов, традиционный код можно написать так:

Язык кода:javascript
копировать
from scipy import signal
import numpy as np

a = np.random.randn(1000, 1000)
b = np.random.randn(1000, 1000)
result = signal.convolve2d(a, b)

После ускорения с помощью CuPy потребуется лишь небольшая модификация:

Язык кода:javascript
копировать
from cupyx.scipy import signal
import cupy as cp

a = cp.random.randn(1000, 1000)
b = cp.random.randn(1000, 1000)
result = signal.convolve2d(a, b)

Это небольшое изменение может изменить вашу операцию свертки с «медленной» на «швейцарскую».

Кому подходит CuPy?

Если вы разработчик Python, которому часто приходится обрабатывать большие объемы данных или выполнять сложные вычисления, будь то наука о данных, машинное обучение или высокопроизводительные вычисления, стоит попробовать CuPy. Особенно когда вы используете аппаратное преимущество графического процессора, потенциал CuPy полностью реализуется.

Даже если ваш текущий проект не предполагает глубокого обучения или высокопроизводительных вычислений, по мере увеличения размера данных такие инструменты, как CuPy, могут сэкономить вам много времени и действительно «тратить меньше времени на ожидание результатов и больше времени». Найдите время подумать о вещах».

некоторые мысли

Адрес проекта:

https://github.com/cupy/cupy

CuPy — это «острый инструмент», который может легко повысить производительность кода Python. Он не только хорошо совместим с NumPy, но и очень прост в использовании, и нет необходимости заново изучать новые операции. В то же время, используя возможности параллельных вычислений графического процессора, он может значительно повысить эффективность крупномасштабной обработки данных и сложных вычислений. Если вы еще не пробовали CuPy, я настоятельно рекомендую вам попробовать. Возможно, потребуется внести всего лишь несколько небольших изменений, и производительность вашего кода значительно улучшится.

В следующий раз, когда вы будете писать код Python, вы можете подумать об этом: не пора ли сопоставить ваш код со «спортивным автомобилем» CuPy?

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.