Si estuviera comenzando una empresa que hace un uso intensivo de ML como Quora, ¿qué tecnologías utilizaría?

Aprendizaje automático: la distribución Anaconda de Python 3.x, seguro. Probablemente usaría TensorFlow con Keras si necesitara un aprendizaje profundo y scikit-learn para todo lo demás. Desarrollaría una biblioteca interna de código de pegamento y funciones auxiliares para estandarizar las tuberías de aprendizaje automático. Por mucho que ame a R, lo restringiría al análisis y lo evitaría en la producción.

Backend: Sería muy tentador usar Python para asegurar que el código de aprendizaje automático se integre bien con todo, pero como dice Vladimir Novakovski, eso importa menos con una arquitectura de microservicio, lo cual es casi seguro que elegiría. Consideraría seriamente Go como el principal lenguaje de back-end, aunque no tengo experiencia con él. Me encantaría decir algo como Scala, Elixir o incluso Haskell, pero creo que eso haría mucho más difícil encontrar desarrolladores expertos.

Frontend: reaccionar. La mayor parte de mi experiencia es con Angular, y no quiero volver allí. Me gusta Reaccionar por muchas de las mismas razones por las que no me gusta Angular.

Base de datos: SQL Server en Azure o MySQL en AWS. Evitaría NoSQL como la plaga hasta que tuviera tantos datos que simplemente no hubiera otra opción. Para el análisis de big data, usaría Spark, pero si estuviera en Azure, consideraría Azure Data Lake.

Llegué temprano en algunas startups: herramientas favoritas actuales:

  • Balanceo de carga / terminación SSL: nginx
  • aplicación web: Flask + python
  • interfaz: reaccionar
  • db: Postgres si necesita transacciones, mongo si necesita un almacén de documentos, quizás ambos si necesita ambos
  • caché / bloqueos distribuidos / misceláneo: redis
  • colas de tareas: rq + redis
  • analítica:
  • almacén de datos: BigQuery
  • archivos: .json.gz en GCS
  • visualización: Metabase
  • registro frontend: analytics.js
  • ingeniería de datos: trabajos de flujo de aire / python (PyPy para un intercambio de datos más rápido)
  • Implementación / gestión de configuración: salt + git
  • SO: Ubuntu LTS
  • init: supervisor
  • ML: Python + sklearn
  • Hosting: EC2 + VPC
  • DNS / registrador: Route53
  • Certificados SSL: namecheap
  • almacenamiento de objetos: S3
  • Registro de excepciones: Rollbar
  • Monitoreo: uso la densidad del servidor, probablemente evaluaría otra cosa aunque
  • CI / build: buildkite
  • dev: vagrant + todo lo anterior: ejecuta exactamente lo que ejecutas en producción.
  • Obviamente, esta es una gran pila de Python, pero al conocer este idioma, obtienes acceso a una gran cantidad de excelentes herramientas, bibliotecas, documentos e ingenieros que están versados ​​en él.

    Prefiere herramientas individuales que hagan bien una cosa en lugar de marcos que intentan hacer todo. Ejecute sus propias tiendas de respaldo frente a las alojadas en la nube: hace que su historia sobre la ejecución de un entorno de desarrollo para sus ingenieros sea más fácil, limita el bloqueo y tiene flexibilidad para ejecutar lo que quiera como quiera.

    Gran pregunta: relevante para mí cuando estoy comenzando una empresa. Creo que, a mediados de 2017, hay un par de opciones bastante claras para la mayoría de las nuevas empresas, y otras que son muy discutibles.

    Para el front-end web, React ha sido el líder en el último año o dos. Para dispositivos móviles, recomendaría React Native, y posiblemente algo como Expo.

    Para el aprendizaje automático, usaría Python. Consulte también ¿Qué idioma es mejor para el análisis de series temporales, Python o R? Descubrí que formatear las fechas es bastante fácil en ambos casos. Entonces, ¿qué idioma es mejor para cosas como el modelado ARIMA y la estimación de densidad espectral? – Hace unos años, mi respuesta aquí habría sido R.

    Para el back-end, recomendaría usar microservicios (pero no demasiado micro) que interactúen de manera que tengan sentido comercial (algunos lo llaman desarrollo impulsado por el dominio). Esto también le permite cubrirse cuando se trata de elegir el idioma. Dicho esto, hay argumentos para Python y también para lenguajes como Java y Go que están fuertemente tipados. Algunos también han comenzado con Haskell o Scala y están contentos con los resultados. Además, hay esfuerzos como MyPy para agregar tipos estáticos a Python.

    Finalmente, me quedaría con almacenes de datos sencillos como MySQL o Postgres hasta que tenga una mejor idea de sus conjuntos de datos en el futuro. Ver ¿Las empresas usan MySQL para nuevos proyectos o Mongo se hizo cargo por completo? Más allá de eso, consideraría algo como MemSQL si necesita velocidad y tecnologías como Spark para conjuntos de datos realmente grandes, pero diferiría esa decisión hasta 1–2 años después.

    La respuesta es subjetiva, por supuesto, ya que no hay una mejor respuesta.

    No usaría Python para API. En cambio, usaría un lenguaje fuertemente tipado para API y backend.

    Usaré Python para ML y React para frontend.

    Para la base de datos, la respuesta depende de su aplicación específica. Esquema basado o sin esquema. También depende del servicio en la nube que esté utilizando.

    Cuando comenzamos Leap.ai el año pasado, elegimos Go para backend, Swift para iOS, React para web, Python para ML, JSON RESTful API y Datastore en Google Cloud. Solo como un ejemplo anecdótico.

    Probablemente comenzaría con tener lo menos posible. Mi objetivo es liberar lo más rápido posible y validar el concepto. Con ese fin, no quiero construir nada más de lo que debo, suponiendo que haya alternativas razonablemente de bajo costo, mi tiempo y conocimiento son probablemente los menos capaces de escalar. Entonces eso me llevaría a algo como:

    1. Un back-end móvil como servicio (MBaaS) como Firebase, servidor Parse, etc. o tal vez algo con AWS Cognito
    2. Servicio de ML como AWS Machine Learning, Azure ML, Google Recommended, Watson, HPE Haven

    En el front-end, personalmente prefiero Ionic sobre React native, pero YMMV.

    Pero suponga que tendrá que reescribir, ejem, refactorizar, todo si necesita escalar de todos modos. Por lo tanto, tenga cuidado de hacer inversiones sustanciales de tiempo en cualquier cosa por adelantado.

    Estamos pasando por un requisito similar y estamos siguiendo la misma pila de tecnología que usted para empezar. Tenemos un motor ML que se está desarrollando en Python. Tenemos un servidor API REST de Java que atiende las solicitudes del usuario final. Por ahora solo se ha decidido el front-end angular en HTML. No hay plataformas portátiles compatibles todavía. MongoDB se selecciona como la persistencia, ya que puede adaptarse fácilmente al creciente cambio de modelo del motor Python ML. Java se comunica con Python a través de JMS a través de un intermediario de mensajes

    Depende del objetivo, mi aprendizaje automático actual en el que estoy trabajando es MEAN stack, por lo que Mongo DB, el extremo ML juega muy bien con JSON, pero estoy seguro de que puedes construir un producto decente con Python.