Pipeline pandas existente em um CSV de 40 GB é muito lento na CPU.
→Substitua pandas por cuDF; a maioria das chamadas de leitura/filtro/agrupamento/junção mantém a mesma API e executa na GPU.
Por quê: cuDF espelha a API pandas por design, então a migração é principalmente uma mudança de importação em vez de uma reescrita.
Referência↗
A equipe quer acelerações de GPU sem tocar no código pandas existente.
→Carregue o acelerador cudf.pandas (%load_ext cudf.pandas ou python -m cudf.pandas); ele executa operações na GPU e retorna à CPU automaticamente.
Por quê: A aceleração sem alteração de código com fallback transparente para CPU mantém as operações não suportadas funcionando.
Referência↗
Precisa da carga columnar mais rápida de um grande conjunto de dados analíticos na GPU.
→Armazene como Parquet e leia com cudf.read_parquet; o corte de colunas e o pushdown de predicados minimizam a transferência para o dispositivo.
Por quê: Parquet columnar mapeia de forma limpa para cuDF baseado em Arrow e lê muito mais rápido do que CSV orientado a linhas.
cuDF é mais lento que pandas em um arquivo de 50 MB.
→Mantenha dados pequenos na CPU; a transferência host-para-dispositivo e a sobrecarga de lançamento de kernel dominam abaixo de ~1–2 GB.
Por quê: A aceleração da GPU compensa em escala; para dados minúsculos, o custo de cópia excede o ganho de computação.
Agregue bilhões de linhas por chave com múltiplas estatísticas.
→Use df.groupby(key).agg({...}) em cuDF; as agregações são executadas como kernels GPU paralelos.
Limpar e normalizar uma coluna de texto de alta cardinalidade em escala de GPU.
→Use o acessador .str do cuDF (lower, strip, replace, contains, split); as operações de string são aceleradas por GPU via libcudf.
Por quê: cuDF possui uma camada de string dedicada para GPU, então a limpeza de texto não precisa retornar à CPU.
Junte dois grandes DataFrames de dispositivo em uma chave compartilhada.
→Use cudf.merge / df.merge com a chave de junção; as junções de hash são executadas na GPU.
Por quê: Ambos os frames já devem estar no dispositivo para evitar uma viagem de ida e volta; misturar pandas e cuDF força uma cópia no host.
O conjunto de dados possui valores ausentes que interrompem o treinamento downstream do cuML.
→Use cuDF fillna/dropna e casts de dtype explícitos antes do fit; cuML espera arrays numéricos limpos no dispositivo.
Dtypes mistos/de objeto causam erros ou inchaço de memória em cuDF.
→Converta para dtypes numéricos ou categóricos compactos (int32/float32, category) precocemente para diminuir o consumo de memória da GPU.
Por quê: O downcasting reduz a pressão da memória do dispositivo, o gargalo mais comum em uma única GPU.
Precisa de codificação de rótulo/one-hot para recursos categóricos antes do treinamento.
→Use o dtype categórico cuDF com .cat.codes ou codificadores de pré-processamento cuML para manter os dados no dispositivo.
Precisa de matemática de array numérica bruta não exposta pela API do DataFrame cuDF.
→Converta via df.values ou to_cupy() e opere com CuPy (arrays GPU compatíveis com NumPy), então traga os resultados de volta.
Por quê: cuDF e CuPy compartilham memória do dispositivo através da __cuda_array_interface__, então a conversão é de cópia zero.