194K subscribers
3.56K photos
543 videos
17 files
4.3K links
Погружаемся в машинное обучение и Data Science

Показываем как запускать любые LLm на пальцах.

По всем вопросам - @haarrp

@itchannels_telegram -🔥best channels

Реестр РКН: clck.ru/3Fmqri
Download Telegram
🌟 Numpy QuadDType: Четырехкратная точность в Python.

NumPy-QuadDType (numpy_quaddtype) — это реализация пользовательского типа данных (dtype) для NumPy, которая обеспечивает настоящую арифметику с плавающей точкой четверной точности на разных платформах.

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

Ядро numpy_quaddtype построено вокруг на двух ключевых компонентов:

🟢скалярный тип QuadPrecision, представляющий отдельные скаляры четверной точности;

🟢тип данных NumPy QuadPrecDType, позволяющий использовать эти скаляры четверной точности в массивах и операциях NumPy.

Отличительная черта numpy_quaddtype - его подход с двойным бэкэндом:

🟠SLEEF (библиотека SIMD для оценки элементарных функций): этот бэкэнд использует тип Sleef_quad из библиотеки SLEEF, предоставляя настоящую 128-битную учетверенную точность.

🟠Long Double: этот бэкэнд использует собственный тип long double, который может обеспечивать точность до 80 бит в некоторых системах, обеспечивая совместимость с np.longdouble.

Гибкость архитектуры numpy_quaddtype наследуется от компонентов ее ядра: QuadPrecisionObject, хамелеоноподобная структура, которая может переключаться между формами:

typedef union {  
Sleef_quad sleef_value;
long double longdouble_value;
} quad_value;

typedef struct {
PyObject_HEAD
quad_value value;
QuadBackendType backend;
} QuadPrecisionObject;


QuadPrecDTypeObject, который действует как мост, позволяя высокоточным числам гармонично работать в массивах и операциях NumPy:

typedef struct {  
PyArray_Descr base;
QuadBackendType backend;
} QuadPrecDTypeObject;


Он позволяет переключаться между бекэндами Sleef_quad (для SLEEF) и long double во время выполнения:

>>> import numpy as np  
>>> import numpy_quaddtype as npq

# Using SLEEF backend (default)
>>> x = npq.QuadPrecision(3.5)
>>> x = npq.QuadPrecision(3.5, backend='sleef')
>>> repr(x)
QuadPrecision('3.5e+000', backend='sleef')

# Using longdouble backend
>>> y = npq.QuadPrecision(2.5, backend='longdouble')
>>> repr(y)
QuadPrecision('2.5e+000', backend='longdouble')

# Creating a NumPy array with QuadPrecision dtype
>>> z = np.array([x, x], dtype=npq.QuadPrecDType()) # SLEEF
>>> print(z)
[QuadPrecision('3.5e+000', backend='sleef')
QuadPrecision('3.5e+000', backend='sleef')]

>>> z = np.array([y, y], dtype=npq.QuadPrecDType("longdouble")) # longdouble
>>> print(z)
[QuadPrecision('2.5e+000', backend='longdouble')
QuadPrecision('2.5e+000', backend='longdouble')]


В тестах numpy_quaddtype с бэкендом SLEEF показал точность в 34 десятичных знаков. ULP (единица в младшем разряде) для основных арифметических операций ≤ 0,5000000001, а для трансцендентных функций ≤ 1,0.

C бэкендом Long Double показал точность, зависящую от платформы: 18-19 десятичных знаков в Linux и 15-17 в Windows.

В настоящее время ведётся подготовка к выпуску numpy_quaddtype в виде пакета Python, доступного через PyPI и conda. Также планируется направить предложение NEP для интеграции numpy_quaddtype в экосистему NumPy и рассмотреть TLFloat как потенциальную замену SLEEF в будущих версиях.

▶️Читать полную статью с демо возможностей numpy_quaddtype на примере визуализации множества Мандельброта при экстремальном увеличении и моделирование квантового гармонического осциллятора для двухатомных молекул.


@ai_machinelearning_big_data

#AI #ML #DS #Python #NumPy
Please open Telegram to view this post
VIEW IN TELEGRAM
🌟 cuPyNumeric: замена NumPy от NVIDIA.

По мере роста объемов данных и сложности вычислений, вычисления на Python и NumPy, основанные на CPU, нуждаются в ускорении для выполнения современных исследований.

cuPyNumeric разработана, чтобы стать заменой библиотеки NumPy, предоставляя сообществу Python распределенные и ускоренные вычисления на платформе NVIDIA. cuPyNumeric позволяет масштабировать вычисления без изменения кода проектов с одного CPU до суперкомпьютеров с несколькими GPU и вычислительными нодами.

Библиотека построена на Legate, поддерживает родной Python и интерфейс NumPy. cuPyNumeric доступен из conda (версия не ниже 24.1) в legate channel. На системах с GPU пакеты, поддерживающие графические ускорители будут выбраны автоматически во время установки.

Пример эффективности cuPyNumeric - обработка 10 ТБ микроизображений многоракурсной микроскопии в виде одного массива NumPy за один день с визуализаций в режиме реального времени.

▶️Установка и тест на примере из репозитория:

# Create new conda env
conda create -n myenv -c conda-forge -c legate cupynumeric

# Test via example from repo
$ legate examples/black_scholes.py
Running black scholes on 10K options...
Elapsed Time: 129.017 ms


📌Лицензирование: Apache 2.0 License.


🟡Статья
🟡Документация
🖥GitHub


@ai_machinelearning_big_data

#AI #ML #NumPy #NVIDIA #cuPyNumeric
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM