OK, uma nova resposta para uma pergunta antiga, mas ainda mais relevante agora. A pergunta que você está fazendo tem a ver com precisão finita, normalmente o domínio da análise de sinais e da matemática experimental.
Flutuadores de precisão dupla (DP) vamos fingir que não existem problemas de precisão finitos, o mesmo que acontece com a maioria dos problemas matemáticos do mundo real. Na matemática experimental, não há fingimento.
Flutuadores de precisão única (SP) nos forçam a considerar o ruído de quantização. Se nossos modelos de aprendizado de máquina rejeitam inerentemente ruídos, como redes neurais (NN), redes convolucionais (CNN), redes residuais (ResN), etc., o SP geralmente gera resultados semelhantes aos da DP.
Os flutuadores de meia precisão (HP) (agora suportados no cuda toolkit 7.5) exigem que os efeitos de quantização (ruído e arredondamento) sejam considerados. Muito provavelmente veremos a HP flutuar nos kits de ferramentas comuns de aprendizado de máquina.
Há trabalhos recentes para criar cálculos de menor precisão em flutuadores, bem como números de precisão fixos. O arredondamento estocástico permitiu que a convergência se processasse com as CNNs, enquanto a solução diverge sem ela. Estes documentos ajudarão você a melhorar sua compreensão dos problemas com o uso de números de precisão finita no aprendizado de máquina.
Para responder às suas perguntas:
SP não é tão ruim. Como você aponta, é duas vezes mais rápido, mas também permite colocar mais camadas na memória. Um bônus é em economizar despesas, obtendo dados dentro e fora da gpu. Os cálculos mais rápidos e as despesas gerais mais baixas resultam em menores tempos de convergência. Dito isto, a HP, para alguns problemas, será melhor em algumas partes da rede e não em outras.
- Parece-me que muitos dos kits de ferramentas de aprendizado de máquina lidam com SPs e DPs. Talvez alguém com uma experiência mais ampla com os kits de ferramentas adicione seu níquel.
- O Python suportará o que o kit de ferramentas gpu suporta. Você não deseja usar tipos de dados python, pois estará executando um script interpretado na CPU.
Observe que a tendência nas redes neurais agora é usar camadas muito profundas, com execuções de mais de alguns dias comuns nos clusters de gpu mais rápidos.