Подобрена производителност, нови функции, разширена функционалност и по-голяма стабилност

Излезе най-новата версия на RAPIDS. RAPIDS 22.08 е пълен с актуализации, които ще ви позволят да правите повече и по-бързо, когато изпълнявате работните си натоварвания за научни данни на NVIDIA GPU.

Ключовите актуализации в RAPIDS 22.08 включват:

  • разширена поддръжка за четене и запис на данни в cuDF и libcudf
  • нов API за набор от данни на cuGraph, който ви позволява по-лесно да създавате и проверявате Graph обекти

Тази версия на RAPIDS също включва стабилни актуализации на кода, за да осигури по-стабилно и ефективно изживяване във всички библиотеки и всички платформи.

NVIDIA GTC, глобалната AI конференция
Преди да се потопим в обсъждането на нови характеристики и функционалност, искахме да ви уведомим за NVIDIA GTC, която ще се проведе онлайн от 19 до 22 септември 2022 г. Това безплатно събитие е страхотен форум за директно чуване както от потребители, така и от разработчици на RAPIDS. Не пропускайте да разгледате тези сесии, за да научите първи за нашите планове и да разберете как RAPIDS се използва за стимулиране на въздействието в индустриите.

Последни блогове
Общността на RAPIDS също публикува няколко фантастични блога по време на това издание:

  • Научете как да управлявате широкомащабни графични анализи с Memgraph и NVIDIA в тази публикация в блога, написана от нашите приятели в Memgraph
  • Нашият екип на cuML написа страхотно въведение в Naive Bayes в този блог, като ви показва как да внедрите всеки от вариантите на Naive Bayes и обяснява кога трябва да ги използвате

Нови функции

Разширена поддръжка за четене и писане на данни в cuDF и libcudf
Много потребители поискаха възможността да записват низове и списъци с int8 стойности като двоични, когато работят с Parquet. В резултат на това в тази версия направихме възможно входящите данни, които са или низ, или СПИСЪК от INT8/UINT8, да бъдат кодирани като двоичен код на Parquet, ако е зададен флагът set_output_as_binary.

За потребителите на RAPIDS, работещи в екосистемата Hadoop, ORC е често използван файлов формат. CuDF ORC записващото устройство преди това поддържаше писане на DataFrames в ORC файл с бързо компресиране. В изданието 22.08 екипът добави експериментална поддръжка за използване на zlib компресия при запис в ORC, като предаде compression = ZLIB на функцията.

import os
os.environ['LIBCUDF_NVCOMP_POLICY'] = 'ALWAYS'
import cudf, cupy
df = cudf.DataFrame({'a': cupy.random.randint(0, 100, 100_000)})
df.to_orc('test.orc', compression='ZLIB')

Създавайте графики от примерни набори от данни в един ред с новия API за набор от данни cuGraph
Версията cuGraph 22.08 представя новия — все още експериментален — API за набори от данни. Подобно на подобни API в Scikit-Learn, Pytorch и NetworkX, API за набори от данни cuGraph позволява на потребителите бърз достъп до популярни, предварително дефинирани набори от данни за използване в демонстрации, експерименти, тестове, примери или всяко друго приложение, което изисква графични данни, които не са специфични за потребителя.

Помислете за много популярния набор от данни на Zachary’s Karate Club. Преди новия API за набори от данни, за да може потребителят да експериментира с cuGraph, използвайки този набор от данни, първо трябва да го изтегли на място, достъпно за неговата машина. След това те биха прочели ръчно изтегления файл в cuDF DataFrame, като присвоят имена на отделните колони, което също изисква от тях да знаят разделителя на CSV файла и използваните типове данни. Едва тогава те биха могли да създадат обект cuGraph Graph, използвайки присвоените имена на колони, преди накрая да изпълнят алгоритъм за анализ като Pagerank.

API за набори от данни значително опростява този процес. Един оператор за импортиране и един ред код са всичко, което е необходимо, преди да стартирате алгоритъма за анализ. Потребителят дори не трябва да знае подробности като полето за разделител или типове данни, или ръчно да наименува и указва колони, за да постигне това:

Предишен

>>> import cugraph
>>> import cudf
>>>
>>> # Assume karate.csv has been downloaded to the path specified
>>> datafile = "/path/to/karate.csv"
>>> gdf = cudf.read_csv(datafile,
...                     delimiter=' ',
...                     names=['src', 'dst', 'weight'],
...                     dtype=['int32', 'int32', 'float32'])
>>> G = cugraph.Graph()
>>> G.from_cudf_edgelist(gdf, source='src', destination='dst')
>>>
>>> # Find the top three "important" vertices
>>> cugraph.pagerank(G).sort_values('pagerank', ascending=False)[0:3]
    pagerank  vertex
16  0.100917      33
17  0.096999       0
18  0.071692      32

Ново

>>> import cugraph
>>> from cugraph.experimental import datasets
>>>
>>> G = datasets.karate.get_graph(fetch=True)
>>>
>>> # Find the top three "important" vertices
>>> cugraph.pagerank(G).sort_values('pagerank', ascending=False)[0:3]
    pagerank  vertex
16  0.100917      33
17  0.096999       0
18  0.071692      32

В допълнение към набора от данни на Karate Club, API за набори от данни включва „делфини“, малка графика с 62 върха, представляваща общност от афалини, и „polbooks“, графика със 105 върха върху книги за политиката на САЩ.

API за набори от данни също е полезен за потребители, които биха искали да направят собствените си набори от данни лесни за използване от други. Това става чрез предоставяне на YAML файл с необходимите метаданни. Вижте .yaml файловете в директорията datasets/metadata в репото cugraph за примери и създайте екземпляр на Dataset, както е показано в datasets package.

Всички примерни бележници на cuGraph са актуализирани, за да използват този елегантен нов API, така че не забравяйте да ги разгледате, за да видите примери за това как да ускорите обработката на графиките си в Python.

Актуализации на RAFT: Многократно използвани ускорени функции и инструменти.
Библиотеката RAFT съдържа широко използвани алгоритми и примитиви за наука за данни и машинно обучение. В исторически план библиотеката RAFT е осигурявала задкулисна поддръжка за cuML и cuGraph, но в тази версия 22.08 проектът RAFT започна да получава набор от свои собствени, фокусирани върху крайния потребител, независими резултати! Първият е реализация на C++ на новия ни IVF-FLAT алгоритъм за приблизителни най-близки съседи. Това е важна нова функция, тъй като е по-бърза от FAISS, която е почти стандартната библиотека за високопроизводителни ANN на GPU. И следете, защото екипът е в процес на интегрирането му във FAISS!

Ускорете вашите 2D и 2D евклидови трансформации на разстояние в cuCIM
cuCIM 22.08 въвежда GPU-ускорени трансформации на евклидови разстояния за 2D изображения и 3D обеми. За всяко изображение с набор от начални точки вече можете да използвате distance_transform_edt, за да изчислите евклидовото разстояние от всяка фонова точка до най-близките начални точки. Можете също така да получите обратно координатни изображения, които дават координатите x, y (и z в 3D) на най-близката начална точка до всяка точка в изображението:

import cupy as cp
from cucim.core.operations.morphology import distance_transform_edt
import math
shape = (200, 200)
size = math.prod(shape)
ntrue = .001 * size
p_true = ntrue / size
p_false = 1 - p_true
# generate a sparse set of 2D background points
cp.random.seed(123)
image = cp.random.choice([0, 1], size=shape, p=(p_false, p_true))
distances, coords = distance_transform_edt(
    image == 0, return_distances=True, return_indices=True)

Цветната диаграма на Вороной на Фигура 1 беше генерирана чрез последваща обработка на изхода, за да илюстрира „регионите“, най-близки до всяка отделна начална точка.

Подобрения в производителността навсякъде

Тази версия включва набор от нови актуализации за ускоряване на вашия код.

cuDF вече позволява спецификация на битова ширина по подразбиране
Преди това cuDF имаше консервативна, фиксирана 64-битова ширина по подразбиране. С изданието 22.08, cuDF вече позволява на потребителите да контролират битовата ширина по подразбиране за цели и плаващи типове. Предоставя три опции: „Няма“, „32 бита“ и „64 бита“ (когато е зададено като Няма, резултатът dtype ще бъде приведен в съответствие с това, което pandas конструира).

Това по подразбиране се използва, когато е необходим извод за тип, включително четци на CSV/JSON, когато dtypes не са посочени, за конструктори на cuDF и при материализиране на индекс на диапазон.

Тези актуализации създават потребителски интерфейс, който вече е съвместим с „pandas“.

В примера по-долу read_csv обикновено използва int64 и float64 по подразбиране за данните. Въпреки това, като зададете съответно default_integer_bitwidth и default_float_bitwidth, стойностите се четат като int32 и float 32 вместо това:

>>> cudf.set_option("default_integer_bitwidth", 32)
>>> cudf.set_option("default_float_bitwidth", 32)
>>> df = cudf.read_csv(“test.csv”)
>>> df
   a    b
0  1  2.0
1  2  3.0
2  3  4.0
>>> df.dtypes
a      int32
b    float32
dtype: object

cuGraph използва pylibcugraph за по-добра производителност
cuGraph версия 22.08 също подобрява производителността в библиотеката cuGraph Python от по-високо ниво. Актуализациите на Uniform Neighbor Sampling, BFS, Core Number и Pagerank позволяват на тези алгоритми да използват API на pylibcugraph за повторно използване на вътрешни графични представяния между повикванията, когато е възможно, вместо да ги реконструират всеки път. Освен че подобряват производителността, тези промени също така премахват големи части от наследения код, за да намалят времето за поддръжка и изграждане.

cuSpatial ускорени GeoPandas DataFrames
Ако използвате GeoPandas DataFrames, трябва да видите много по-бързи резултати, особено при зареждане на данни. Това се дължи на значителен рефакторинг и подобрена поддръжка за спецификацията GeoArrow DataFrame.

Заключение

Изданието RAPIDS 22.08 дава на потребителите подобрена производителност, нови функции, разширена функционалност и по-голяма стабилност. За да научите повече за това как можете да се възползвате, не пропускайте възможността да се запишете за разговорите на RAPIDS в GTC. Независимо дали току-що започвате с RAPIDS, или сте опитен член на общността, няма да искате да пропуснете „Задълбочено потапяне в RAPIDS за ускорена наука за данни и инженерство на данни“ на Джон Зедлевски.

Както винаги, очакваме с нетърпение да чуем от вас как използвате новите възможности в RAPIDS. Както винаги, свържете се с нас в GitHub, последвайте ни в Twitter и разгледайте нашата документация и ресурси за първи стъпки.

Имате нужда от корпоративна поддръжка? Глобалната поддръжка на NVIDIA е достъпна за RAPIDS със софтуерния пакет NVIDIA AI Enterprise.