Para construir un sistema complejo, piense que ese sistema complejo consiste en módulos más simples. El truco es identificar esos módulos más simples, dado un problema complejo, debe digerir el problema en componentes que pueda asimilar o implementar.
Dicho esto, puedes comenzar diseñando una base escalable, es decir, una base sobre la que construirás con el tiempo. Piense en el crecimiento, por eso la naturaleza se trata de eso, todo crece. Entonces, una vez que tenga una base escalable planificada, puede comenzar desde allí.
Lo primero es escribir código legible, todas las funciones deben ser largas, no demasiado largas y descriptivas, no tiene que depender de la documentación, sino simplemente observando los nombres de las funciones o clases debe poder tener una idea sobre de qué se tratan. Por supuesto, debe documentar la biblioteca, especialmente si desea hacerla pública, pero debe ser intuitiva y ese es un aspecto importante.
- ¿Cuánto conocimiento de codificación se necesita para llevar a cabo y mejorar los cálculos de DFT (teoría funcional de densidad)?
- ¿Cuál será el trabajo de un programador en un mundo donde la computadora está controlada por voz?
- ¿Los programadores todavía usan AJAX?
- ¿Cómo se utilizan las técnicas de aprendizaje automático en el comercio?
- En términos simples y en sus palabras, ¿cuál es la universalidad de Turing?
Con las bibliotecas, necesita un núcleo desde el cual se puedan extender otras bibliotecas, el núcleo debe manejar las cosas de bajo nivel que son muy comunes en todas las aplicaciones de ML, como el código matemático optimizado por GPU. Este núcleo es importante porque lo ayudará a escribir otras bibliotecas encima de él, ahorrándole mucho tiempo en el futuro.
Específicamente con ML hay una gran cantidad de multiplicación de matrices y codificación de GPU, por lo que comenzaría con la implementación de un módulo de álgebra lineal altamente eficiente, tomándome mi tiempo hasta que funcione bien. Lo diseñaría de tal manera que este módulo manejaría todos los cálculos desde clasificadores lineales más simples hasta redes neuronales profundas.
Una vez que tiene implementadas las funcionalidades centrales en el núcleo, necesita pasar a la parte de shell, es decir, algoritmos que son de propósito menos general y más orientados a la aplicación. Puede agregar soporte para redes neuronales y eventualmente aprendizaje profundo más adelante a medida que avanza. Recuerde que el truco es hacer crecer una biblioteca de ML 🙂 agregar más funciones con el tiempo y eliminar los errores a medida que avanza.
Espero que esto ayude.