Эпоха ускорения графического процессора: как использовать 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
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose