[Python Data Science] Dask.array: мощный инструмент для параллельных вычислений.
[Python Data Science] Dask.array: мощный инструмент для параллельных вычислений.

1. Что такое Dask.array?

1.1 Знакомство с Даском

Dask — мощный инструмент для параллельных вычислений. Он предназначен для обработки крупномасштабных наборов данных, разделения данных на небольшие фрагменты и параллельных вычислений с использованием многоядерных или распределенных систем. Dask предоставляет две основные структуры данных: Dask.array и Dask.dataframe. В этой статье мы сосредоточимся на Dask.array — части Dask, используемой для работы с данными многомерных массивов.

1.2 Обзор Dask.array

Dask.array — это структура данных массива, подобная Numpy, предоставляемая Dask, которая позволяет пользователям выполнять операции, подобные Numpy, с крупномасштабными наборами данных. Dask.array разбивает массив на несколько небольших частей и использует отложенные вычисления для выполнения операций, тем самым обеспечивая параллельные вычисления. Это позволяет Dask.array обрабатывать большие данные, полностью используя вычислительные ресурсы.

1.3 Сравнение Dask.array и Numpy

Dask.array имеет много общего с Numpy по функциональности и использованию, поскольку дизайн Dask.array был вдохновлен Numpy. Однако у них также есть некоторые ключевые различия. Во-первых, Numpy загружает весь массив в память и выполняет все вычисления одновременно, тогда как Dask.array разбивает данные на небольшие фрагменты и при необходимости выполняет ленивые вычисления. Это позволяет Dask.array обрабатывать наборы данных, превышающие размер памяти, и использовать многоядерные или распределенные системы для параллельных вычислений.

Кроме того, операции Numpy обычно выполняются немедленно, а операции Dask.array — с задержкой. Это означает, что перед выполнением операции Dask.array просто строит график вычислений для выполнения вычислений, не выполняя их фактически. Этот метод отложенных вычислений позволяет Dask.array оптимизировать последовательность вычислений и планирование ресурсов, тем самым повышая эффективность вычислений.

2. Установка и базовое использование.

2.1 Установите библиотеку Dask

Прежде чем начать, убедитесь, что у вас установлена ​​библиотека Dask. Если он не установлен, вы можете установить его с помощью следующей команды:

Язык кода:javascript
копировать
pip install dask
2.2 Создание массива Dask

InDask.array,мы можем использоватьdask.arrayфункция для созданияDaskмножество。иNumpyпохожий,Мы можем создать одномерное множество, передав список или кортеж:

Язык кода:javascript
копировать
import dask.array as da

# Создайте одномерное множество Dask
arr = da.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

Помимо одномерных массивов, мы также можем создавать многомерные массивы. Вы можете создать многомерный массив, передав массив Numpy или указав размеры массива:

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

# Создать Numpy множество
data = np.random.random((1000, 1000))

# Создать 2D-множество Dask
arr = da.array(data)
2.3 Расчет и работа массива

В Dask.array мы можем выполнять вычисления и операции с массивами, подобные Numpy. Например, мы можем выполнять математические операции с массивами:

Язык кода:javascript
копировать
import dask.array as da

# Создайте одномерное множество Dask
arr = da.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

# Выполняйте математические операции над множеством
result = arr * 2
print(result.compute())

Результат вывода:

Язык кода:javascript
копировать
[ 2  4  6  8 10 12 14 16 18 20]

Следует отметить, что,мы использовали.compute()Метод запуска расчета。существоватьDaskсередина,Расчеты выполняются лениво,таксуществовать Мы звоним.compute()перед методом,Фактический расчет не происходит.

3. Стратегия блокировки Dask.array

3.1 Преимущества блокировки массива

Одна из основных дизайнерских идей Dask.array — разбить массив на небольшие части и выполнять операции с использованием ленивых вычислений. Эта стратегия фрагментации имеет следующие преимущества:

  1. Обработка крупномасштабных данных:Воляданныеразделить на мелкие кусочки,Dask.array можно настроить для обработки наборов данных, размер которых превышает объем памяти. Каждый небольшой фрагмент может быть обработан в памяти,тем самым эффективно используя вычислительные ресурсы.
  2. параллельные вычисления:Dask.arrayМожет использовать многоядерные или распределенные системы для параллельного выполнения вычислений.。Каждый маленький кусочек можетсуществоватьдругойизна процессорепараллельные расчет, тем самым ускоряя расчеты.
  3. Экономьте ресурсы:Dask.arrayТолькосуществовать Выполнение расчетов при необходимости,Избегайте загрузки всего множества в память одновременно.,Экономит память и вычислительные ресурсы.
3.2 Настройка размера блока

InDask.array,мы можем пройтиda.rechunkфункция для настройкимножестворазмер куска。По умолчанию,Dask.array автоматически выбирает размер чанка,Но иногда нам может потребоваться вручную Отрегулировать. размер фрагмент для лучшей производительности.

Например, предположим, что у нас есть больший массив, который мы хотим разбить на фрагменты по 100 строк и 100 столбцов:

Язык кода:javascript
копировать
import dask.array as da

# Создайте более крупный множество Dask
arr = da.random.random((1000, 1000), chunks=(100, 100))

# Просмотр статуса множества блокировок
print(arr.chunks)

Результат вывода:

Язык кода:javascript
копировать
((100, 100, ..., 100), (100, 100, ..., 100))

Как видите, массив успешно разделен на фрагменты по 100 строк и 100 столбцов.

3.3 Искажение данных и ребалансировка

При использовании Dask.array для вычислений может возникнуть перекос данных. Неравномерность данных означает, что некоторые блоки в сегменте содержат гораздо больший объем данных, чем другие блоки, что приводит к перегрузке некоторых вычислительных узлов, в то время как другие узлы простаивают.

Чтобы решить проблему наклона данных,мы можем использоватьda.rebalanceфункция ребалансировкиданные。da.rebalanceфункциявстреча Воляданные Равномерно перераспределяется по вычислительным узлам,Таким образом достигается балансировка нагрузки.

Язык кода:javascript
копировать
import dask.array as da

# Создайте более крупный множество Dask
arr = da.random.random((1000, 1000), chunks=(100, 100))

# Ребалансировка данных с помощью функции ребалансировки
arr = da.rebalance(arr)

# Просмотр статуса множества блокировок
print(arr.chunks)

Используяda.rebalanceфункция,Мы можем обеспечить балансировку нагрузки на вычислительных узлах,улучшатьпараллельные эффективность расчета.

4. Параллельные вычисления и планирование задач

4.1 Расчет задержки рабочего времени

В Dask вычисления выполняются лениво, что означает, что перед выполнением операции Dask просто строит график вычислений для выполнения вычислений, не выполняя фактически вычислений. Этот метод отложенных вычислений позволяет Dask оптимизировать последовательность вычислений и планирование ресурсов, тем самым повышая эффективность вычислений.

Язык кода:javascript
копировать
import dask.array as da

# Создайте одномерное множество Dask
arr = da.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

# Выполняйте математические операции над множеством
result = arr * 2

# Посмотреть схему расчета
print(result.dask)

Результат вывода:

Язык кода:javascript
копировать
dask.array<mul, shape=(10,), dtype=int64, chunksize=(5,), chunktype=numpy.ndarray>

В этом примере,resultне рассчитывается напрямую,Вместо этого строится вычислительный граф,Представляет порядок вычислений и зависимостей. Это позволяет Dask оптимизировать порядок вычислений.,и производить расчеты при необходимости.

4.2 Планировщик задач Dask

Dask использует планировщик задач для выполнения задач в вычислительном графе. Планировщик задач отвечает за распределение задач по соответствующим вычислительным узлам и мониторинг хода выполнения задач. Dask предоставляет несколько различных планировщиков задач для адаптации к различным вычислительным средам.

Например,dask.threaded.getфункцияможет быть использован длясуществоватьлокальная многопоточная средасерединавыполнять расчеты:

Язык кода:javascript
копировать
import dask.array as da

# Создайте одномерное множество Dask
arr = da.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

# Выполняйте математические операции над множеством
result = arr * 2

# Выполняйте вычисления с помощью многопоточного планировщика задач.
result = result.compute(scheduler='threads')

В дополнение к многопоточному планировщику задач,DaskТакже предоставленоdask.multiprocessing.getфункцияиспользуется длясуществовать Локальная многопроцессная средасерединавыполнять расчеты,а такжеdask.distributed.Clientдобрыйиспользуется длясуществовать分布式集群上выполнять расчеты。

5. Расширенные функции Dask.array

5.1 Функция трансляции

В Dask.array мы можем использовать функцию трансляции для выполнения операций между массивами различной формы. Функция трансляции позволяет Dask.array обрабатывать массивы различной формы без явного расширения размеров массива.

Язык кода:javascript
копировать
import dask.array as da

# Создайте одномерное множество Dask
arr1 = da.array([1, 2, 3, 4, 5])
arr2 = da.array([10, 20, 30, 40, 50])

# использовать Функция транслировать Выполнить операцию
result = arr1 + arr2
print(result.compute())

Результат вывода:

Язык кода:javascript
копировать
[11 22 33 44 55]

В этом примере,arr1иarr2иметь такую ​​же форму,Таким образом, ими можно напрямую управлять.。еслиarr1иarr2Формы разные,Функция телевидения автоматически расширит их до той же формы.,Затем выполните операцию.

5.2 Объединение и разделение массивов

InDask.array,мы можем использоватьda.concatenateфункция Воля Несколькомножество Объединить в один вдоль указанной осимножество:

Язык кода:javascript
копировать
import dask.array as da

# Создать несколько Dask-множество
arr1 = da.random.random((100, 100), chunks=(50, 50))
arr2 = da.random.random((100, 100), chunks=(50, 50))

# Объединить несколько по направлению строки
result = da.concatenate([arr1, arr2], axis=0)

Кроме множества слияний,мы все еще можемиспользоватьda.splitфункция Воляодинмножество Разделить на несколько подчастеймножество:

Язык кода:javascript
копировать
import dask.array as da

# Создать множество Dask
arr = da.random.random((100, 100), chunks=(50, 50))

# Разделить несколько по направлению строки
subarrays = da.split(arr, 10, axis=0)

В этом примере,da.splitфункция ВолямножествоarrРазделить вдоль направления строки на10Высокиймножество。

5.3 Фильтрация массивов и обработка условий

В Dask.array мы можем использовать логическое индексирование для выбора элементов массива, соответствующих определенным условиям. Логическое индексирование вернет логический массив той же формы, что и исходный массив, где элементы True представляют элементы, соответствующие условию, а элементы False представляют элементы, которые не соответствуют условию.

Язык кода:javascript
копировать
import dask.array as da

# Создайте одномерное множество Dask
arr = da.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

# Выберите четные элементы, используя логическую индексацию
result = arr[arr % 2 == 0]
print(result.compute())

Результат вывода:

Язык кода:javascript
копировать
[ 2  4  6  8 10]

В этом примере,насиспользоватьвыбран логический индексмножествоarrсерединаиз Четные элементы。

6. Обработка крупномасштабных наборов данных

6.1 Преимущества ленивых вычислений

Dask.array использует стратегию ленивых вычислений и выполняет вычисления только при необходимости. Преимущество этих ленивых вычислений заключается в том, что они могут обрабатывать большие наборы данных без одновременной загрузки всех данных в память.

Например, предположим, что у нас очень большой массив. Если мы используем Numpy для его обработки, может возникнуть проблема с переполнением памяти:

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

# Создайте очень большое множество Numpy.
data = np.random.random((1000000, 1000000))

# Попытка выполнить множество вычислений может привести к переполнению памяти.
result = data * 2

В этом примере, поскольку Numpy загружает весь массив в память, это может вызвать проблемы с переполнением памяти.

В Dask.array благодаря стратегии ленивых вычислений мы можем обрабатывать большие наборы данных:

Язык кода:javascript
копировать
import dask.array as da

# Создайте очень большое множество Dask.
data = da.random.random((1000000, 1000000), chunks=(1000, 1000))

# Вычислить множество, не вызывая переполнения памяти
result = data * 2
6.2 Использование Dask.array для обработки больших наборов данных

В практических приложениях мы обычно сталкиваемся с большими наборами данных, и Dask.array может этим воспользоваться. Dask.array может эффективно обрабатывать большие наборы данных, разбивая данные на мелкие части и используя ленивые вычисления.

Например, мы можем создать Dask.array, прочитав большой файл данных:

Язык кода:javascript
копировать
import dask.array as da

# Создание множество Dask из больших файлов данных.
arr = da.from_array_file('large_data.npy', chunks=(1000, 1000))

В этом примере,насиспользоватьda.from_array_fileфункцияиз большогоданныедокументlarge_data.npyСозданныйDask.array,И разделите его на небольшие куски по 1000 строк и 1000 столбцов.

6.3 Проблемы обработки очень больших наборов данных

Хотя Dask.array может обрабатывать большие наборы данных, вы все равно можете столкнуться с проблемами при работе с очень большими наборами данных. Очень большие наборы данных могут потребовать обработки распределенных вычислительных ресурсов для полного использования вычислительных ресурсов.

Чтобы обрабатывать очень большие наборы данных, мы можем использовать Dask.distributed для создания распределенного кластера и использовать Dask.array для выполнения вычислений в распределенном кластере.

Язык кода:javascript
копировать
from dask.distributed import Client

# Создать распределенный клиент
client = Client()

# Создание множество Dask из больших файлов данных.,и выполнять вычисления на распределенном кластере
arr = da.from_array_file('large_data.npy', chunks=(1000, 1000))
результат = приб * 2
результат = результат.вычислить()

В этом примере мы используем Dask.distributed для создания распределенного клиента и отправки вычислительных задач Dask.array в распределенный кластер для выполнения. Используя распределенные вычислительные ресурсы, мы можем обрабатывать большие наборы данных, тем самым повышая эффективность вычислений.

7. Dask.array и распределенные вычисления

7.1 Настройка распределенного кластера

Dask.array может использовать распределенные вычислительные ресурсы для выполнения параллельных вычислений. Чтобы использовать Dask.array для распределенных вычислений, нам необходимо построить распределенный кластер и создать клиент Dask.distributed.

первый,Нам нужно начатьDaskпланировщики Несколько Рабочий узел。Можетиспользоватьdask-schedulerиdask-worker命令Приходить启动планировщики Рабочий узел:

Язык кода:javascript
копировать
dask-scheduler
Язык кода:javascript
копировать
dask-worker <scheduler_address>

Чтосерединаscheduler_addressэто адрес планировщика,Например127.0.0.1:8786

Затем,В коде Python,мы можем использоватьDask.distributedизClientКласс приходит Создать распределенный клиент:

Язык кода:javascript
копировать
from dask.distributed import Client

# Создать распределенный клиент
client = Client('scheduler_address')

В этом примере,насиспользоватьClientдобрый Созданныйодин分布式客户端,И укажите адрес планировщика.

7.2 Преимущества распределенных вычислений

Используя Dask.array для выполнения вычислений в распределенном кластере, мы можем полностью использовать вычислительные ресурсы и тем самым повысить эффективность вычислений.

В распределенных вычислениях Dask распределяет задачи по различным рабочим узлам для выполнения и отслеживает ход выполнения задач. Каждый рабочий узел выполняет назначенные ему задачи и возвращает результаты планировщику.

Язык кода:javascript
копировать
import dask.array as da

# Создайте большое множество Dask.
arr = da.random.random((1000000, 1000000), chunks=(1000, 1000))

# Выполнение вычислений с использованием клиентов в распределенном кластере
result = arr * 2
result = result.compute()

В этом примере мы используем Dask.array для выполнения вычислений в распределенном кластере, обеспечивая тем самым параллельные вычисления.

8. Навыки оптимизации производительности и отладки.

8.1 Уменьшите копирование данных

В Dask.array копирование данных является распространенным узким местом производительности. Когда мы выполняем операции с массивами, Dask.array может создавать несколько промежуточных массивов, что приводит к многократному копированию данных.

чтобы уменьшитьданныекопировать,мы можем использоватьda.rechunkфункциявручную настроитьмножестворазмер куска。меньшеразмер куска Может减少серединамеждумножествоизразмер,Тем самым сокращая накладные расходы на копирование данных.

8.2 Использование операций на месте

В Dask.array операции на месте — это метод, позволяющий повысить производительность. Операция на месте означает сохранение результатов вычислений непосредственно в исходном массиве без создания нового массива при выполнении вычислений массива.

для Используйте операции на месте,мы можем использоватьda.map_blocksфункция Иди направомножество Выполнение операций на месте:

Язык кода:javascript
копировать
import dask.array as da

# Создать множество Dask
arr = da.random.random((1000, 1000), chunks=(100, 100))

# Операция на месте: увеличьте значение в нескольких на 1.
def add_one(block):
    block += 1
    return block

# Используйте функцию map_blocks для выполнения операций на месте.
arr = da.map_blocks(add_one, arr)

В этом примере,насиспользоватьda.map_blocksфункцияверномножество Выполнение операций на месте,Добавьте 1 к значению в числе.

8.3 Управление памятью и предотвращение утечек памяти

Управление памятью является важной задачей при работе с крупномасштабными данными. Чрезмерное использование памяти может привести к ее переполнению, а недостаточное использование памяти может привести к неэффективности вычислений.

Для управления памятью мы можем использовать Dask.distributed для мониторинга использования памяти вычислительными задачами и при необходимости корректировать размер фрагмента или распределенные вычислительные ресурсы.

также,мы все еще можемиспользоватьda.persistфункция Приходить Воля Сохранить результаты расчетасуществовать Памятьсередина,Избегайте двойного счета.

Язык кода:javascript
копировать
import dask.array as da

# Создать множество Dask
arr = da.random.random((1000, 1000), chunks=(100, 100))

# Вычислите сумму множества и сохраните результат в памяти.
result = arr.sum()
result.persist()

В этом примере,насиспользоватьda.persistфункция Волямножествоизидержатьсуществовать Памятьсередина,тем самым Избегайте двойного счета.

9. Визуализация и сравнение массивов

9.1 Визуализация массива с использованием Matplotlib

В Dask.array мы можем использовать Matplotlib или другие инструменты визуализации для отображения данных массива в форме диаграммы.

Например,мы можем использоватьMatplotlibизimshowфункция Приходить绘制二维множествоизтепловая карта:

Язык кода:javascript
копировать
import dask.array as da
import matplotlib.pyplot as plt

# Создать 2D-множество Dask
arr = da.random.random((100, 100), chunks=(50, 50))

# Конвертируйте Dask-множество в Numpy-множество и рисуйте тепловые карты.
plt.imshow(arr.compute(), cmap='viridis')
plt.colorbar()
plt.show()

В этом примере,насиспользоватьMatplotlibизimshowфункциянарисованныйDaskмножествоизтепловая карта。

9.2 Сравнение массивов и других структур данных

В практических приложениях нам может потребоваться сравнить Dask.array с другими структурами данных, чтобы выбрать подходящую структуру данных для обработки данных.

Dask.array часто является лучшим выбором при работе с крупномасштабными наборами данных, поскольку он может обрабатывать наборы данных, превышающие размер памяти, и использовать многоядерные или распределенные системы для обеспечения параллельных вычислений.

Однако в случае небольших наборов данных или простых вычислительных задач Numpy и Pandas могут оказаться более подходящими. Numpy и Pandas более полны с точки зрения функциональности и производительности, поскольку представляют собой библиотеки специально для массивов и табличных данных.

10. Практические примеры применения

10.1 Использование Dask.array для обработки данных изображения

При обработке изображений нам часто приходится обрабатывать большие объемы данных изображения. Dask.array может помочь нам эффективно обрабатывать данные изображений.

Например, мы можем использовать Dask.array для чтения и обработки большого количества файлов изображений:

Язык кода:javascript
копировать
import dask.array as da
import imageio

# Создание множество Dask из нескольких файлов изображений
arr = da.stack([da.from_array(imageio.imread(filename)) for filename in filenames])

В этом примере мы используем Dask.array для создания трехмерного массива из нескольких файлов изображений, где каждый двумерный массив представляет изображение.

10.2 Обработка многомерных метеорологических данных

В метеорологии нам часто приходится обрабатывать многомерные метеорологические данные, такие как температура, влажность, скорость ветра и другие данные.

Dask.array может помочь нам эффективно обрабатывать многомерные данные о погоде:

Язык кода:javascript
копировать
import dask.array as da
import netCDF4

# Создать множество Dask из нескольких файлов NetCDF.
arr = da.stack([da.from_array(netCDF4.Dataset(filename)['temperature']) for filename in filenames])

В этом примере мы используем Dask.array для создания трехмерного массива из нескольких файлов NetCDF, где каждый двумерный массив представляет метеорологические данные.

10.3 Использование Dask.array для вычислений машинного обучения

В машинном обучении нам часто приходится обрабатывать крупномасштабные наборы данных и выполнять сложные вычисления.

Dask.array может помочь нам эффективно выполнять вычисления машинного обучения:

Язык кода:javascript
копировать
import dask.array as da
import numpy as np
from sklearn.linear_model import LogisticRegression

# Создайте большое множество Dask.
X = da.random.random((1000000, 100), chunks=(1000, 100))
y = da.random.randint(0, 2, size=(1000000,), chunks=1000)

# Расчеты машинного обучения с использованием логистической регрессии
model = LogisticRegression()
model.fit(X, y)

В этом примере,насиспользоватьDask.arrayСозданныйодин大型特征矩阵Xивектор этикеткиy,и Расчеты машинного обучения с использованием логистической регрессии。

11. Резюме и перспективы

В этой статье мы подробно рассмотрим функции и использование Dask.array, а также способы использования Dask.array для параллельных вычислений крупномасштабных наборов данных. Dask.array, как часть Dask, обеспечивает эффективные операции с массивами и функции параллельных вычислений, которые могут обрабатывать наборы данных, превышающие объем памяти, и полностью использовать вычислительные ресурсы.

Регулируя размер блока массива, используя функцию трансляции, используя операции на месте и другие методы оптимизации, мы можем еще больше повысить производительность Dask.array.

В то же время мы также рассказали, как использовать Dask.distributed для создания распределенного кластера и выполнения вычислений в распределенном кластере для обработки больших наборов данных.

В будущем Dask.array продолжит развиваться, привнося больше удобства и эффективности в области научных вычислений и инженерии. Мы с нетерпением ожидаем более широкого применения Dask.array в таких областях, как обработка больших данных, машинное обучение и научные исследования.

Спасибо за чтение.

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода