36 puntos por xguru 2024-06-10 | 4 comentarios | Compartir por WhatsApp
  • Resumen del contenido de las respuestas

schmookeeg

  • Lo que más me gusta de trabajar actualmente como ingeniero de aprendizaje automático es colaborar con personas sin formación técnica
    • Incluso personas que no pueden abrir MS Outlook más de 3 de cada 5 veces tienen una profundidad y una capacidad de análisis sorprendentes sobre su propio campo de especialidad
    • Eso te vuelve muy humilde
  • Las personas sin formación técnica me ven como un mago, y yo las veo como sacerdotes vudú
    • Cuando entrenamos lo que nos gusta y hacemos predicciones, es muy gratificante para ambas partes
  • La mayor parte del modelado está relacionada con el sector salud
    • Extraemos insights de enormes data lakes de reclamaciones, recetas, notas médicas, signos vitales, imágenes diagnósticas y más
    • También es impresionante lo fácil que es acceder a esta información (dejando HIPAA de lado)
  • Realidad del tiempo
    • Unas 3 horas a la semana se van en reuniones
    • Unas 3 horas se van en preparación del trabajo, resolver problemas de ETL y hacer consultas puntuales para el negocio
    • El resto del tiempo exploro datos para encontrar una pequeña ventaja al predecir ingresos de varios millones de dólares
      • Es como buscar a Wally con matemáticas
      • Y la escena de Wally mide como 50 TB :D

burnedout_dc4e3

  • He trabajado en aprendizaje automático desde mediados de los 2000
  • La mitad del tiempo se me va en limpiar datos para entrenar y usar modelos, es decir, en “mantener funcionando el pipeline de datos”
  • La otra mitad del tiempo se me va en dar soporte técnico a “científicos de IA” que casi no saben programar
    • Se la pasan copiando y pegando cosas en distintos servicios de chatbot
      • Mi trabajo principal es explicarles cómo instalar paquetes de Python y cómo usar Git
    • No tienen ningún plan de cómo su trabajo va a aplicarse al proyecto en el que estamos
      • Pero insisten en que los modelos transformer van a resolver todos nuestros problemas de procesamiento de datos
  • Estoy pensando en renunciar y no buscar un nuevo trabajo hasta que termine este ciclo de hype

tambourineman88

  • La realidad fue lo opuesto de lo que esperaba cuando estudiaba aprendizaje automático
    • El 95% de este trabajo es limpieza de datos, unión de datasets y feature engineering
    • Ajustar y probar modelos es apenas el 5%
  • Respuesta #1 a esta publicación
    • Siempre ha sido así desde el principio, y seguirá siéndolo, amén
    • Puntos importantes en nivel staff/principal
      • Es importante mantener la “impedancia de datos” entre las funciones de producto que dependen de modelos de inferencia y la captura de datos
      • Esto es para evitar que la instrumentación y la granularidad de los datos que alimentan al almacén de datos y al corpus de entrenamiento se rompan cuando cambie el producto o una funcionalidad
    • Puntos importantes en problemas de aprendizaje por refuerzo (RL)
      • Es importante asegurarse de que se hayan capturado las variables correctas para las tuplas del espacio de estados y acciones
      • Después de eso, lo siguiente es encontrar cómo ajustar la interfaz o el modelo del entorno para obtener retroalimentación de recompensa

davedx

  • Ejecutar pip install pytorch
  • El entorno se rompe
  • Perder 4 horas arreglando el entorno de Python
  • Ejecutar pip install Pillow
  • Aparece un error diciendo que no coincide con la arquitectura de CPU de la MacBook
  • Perder otras 4 horas borrando todo lo relacionado con Python e instalándolo de nuevo desde cero
  • Intentar ejecutar pip install ..., ¡pero ya es hora de salir!

Xenoamorphous

  • Soy desarrollador de software generalista, pero tuve que hacer trabajo de ML por necesidad
  • Me da curiosidad cómo los expertos “de verdad” en ML manejan los resultados probabilísticos / de descenso por gradiente y las expectativas de la gente
  • En el trabajo normal de software, algo funciona o no funciona, y si no funciona, puedes explicar por qué y, con suerte, arreglarlo
  • Pero en ML te preguntan “¿por qué este clasificador de texto no clasificó correctamente este texto?”
    • Y lo único que puedes decir es “le faltaron 0.004 puntos para alcanzar el umbral” o “no lo alcanzó por la elección o el orden de las palabras”
    • Eso parece dejar a todo el mundo insatisfecho

angarg12

  • Mi puesto es ingeniero de ML, pero en la práctica mi trabajo se parece mucho más a ingeniería de software pura
  • Mi trabajo principal es construir sistemas que soporten sistemas de ML en producción
    • Como mencionaron otros, eso incluye sobre todo transformación de datos, entrenamiento de modelos y model serving
  • También incluye construir herramientas o modificar sistemas existentes para que los científicos puedan hacer su trabajo
  • Pero visto desde afuera, parece que mi empresa es una excepción
  • En la industria, las expectativas para un ingeniero de ML parecen alinearse más con lo que hacen los científicos de datos / científicos aplicados (por ejemplo, construir y probar modelos)
    • Eso genera mucha ambigüedad sobre lo que se espera de cada rol en cada empresa

runban

  • Un conserje muy bien pagado
    • Con datos sucios no vas a obtener resultados decentes
    • Por cierto, para este trabajo Perl es muchísimo mejor que Python
  • Un solucionador de problemas de motherboards muy bien pagado
    • Incluso con cooling por agua, las H100 se calientan muchísimo
    • Porque no tenemos a nadie dedicado al hardware
  • Y, como todos, pelear con dependencias de terceros que hacen lo que quieren

primaprashant

  • He trabajado como MLE durante los últimos 5 años y, como dijeron otros comentarios, gran parte del trabajo se parece a SWE
  • Dependiendo de la etapa del proyecto, las tareas diarias varían, pero suelen caer en alguna de estas categorías:
    • Colaborar con stakeholders y TPM para desarrollar hipótesis que resuelvan problemas de negocio de alta prioridad mediante análisis de datos
    • Estructurar un problema de negocio como un problema de ML y crear métricas adecuadas para el modelo de ML y para el problema de negocio
    • Construir PoC y prototipos para validar la viabilidad técnica de nuevas funciones e ideas
    • Escribir documentos de diseño para arquitectura y decisiones técnicas
    • Trabajar con el equipo de plataforma para configurar y mantener pipelines de datos según las necesidades de proyectos nuevos y existentes de ML
    • Construir, desplegar y mantener microservicios de ML para inferencia
    • Ejecutar pruebas A/B y escribir documentos de diseño para el análisis posterior
    • Configurar pipelines para reentrenar modelos de ML

jackspawn

  • Dedico más del 50% de mi tiempo a ingeniería backend
    • Porque ML se usa dentro de una API más grande
  • Soy responsable de la experiencia end-to-end de esa API
    • Así que hago lo que dé el mejor valor por el tiempo invertido
    • Y muchas veces eso no tiene nada que ver con el modelo de ML

mardifoufs

  • Trabajo en optimización de código de inferencia y en “productizar” modelos ya entrenados
  • Actualmente trabajo con entrenamiento e inferencia local porque estoy en una industria donde los servicios en la nube todavía no son de uso común
    • Como no se trata de LLM, no hay tantas herramientas ya hechas, así que resulta interesante
    • Hay que construir muchas cosas por cuenta propia
  • Hago de todo, desde evaluar la calidad de los datos (la parte local es desafiante) hasta usar CUDA directamente
    • Porque existen bibliotecas de procesamiento de señales construidas sobre CUDA que ya podemos aprovechar
  • A veces también incluye construir herramientas internas para el equipo (un equipo mixto de investigadores y MLE)
    • Como es un campo muy de nicho, tenemos que construir nuestras propias herramientas para visualizar datos e inferencia
  • Tengo libertad total en relación con herramientas y diseño de software interno, así que he podido tener bastante impacto en la organización
  • Una de las herramientas improvisadas que construí ahora va a incorporarse también al producto principal

hirako2000

  • No es mi tarea principal, pero paso la mayor parte del tiempo “pegando cosas entre sí”
    • Ajustar open source existente
    • Encontrar formas de optimizar recursos
    • Reentrenar modelos con otros datasets
    • Intentar ejecutar código Python mal escrito
    • Agregar archivos de requirements faltantes
    • Limpiar datos
  • Pienso en qué cosas podrían resolverse de forma realmente útil con ML que no se hayan hecho ya hace años
  • Reviso los precios más recientes de GPU y calculo si vale la pena comprar una en lugar de alquilar tiempo caro a un proveedor de hosting
  • Leo papers hasta que me duele la cabeza
    • Lo que toma tiempo es leer el abstract y revisar por encima algunos diagramas del medio

tenache

  • Estudié machine learning y originalmente me contrataron para ese rol, pero la empresa cambió de rumbo y ahora trabajo con LLM
  • Paso la mayor parte del tiempo en cosas como:
    • Entender cómo funcionan distintos LLM
    • Encontrar los parámetros óptimos
    • Cómo hacer RAG (Retrieval-Augmented Generation)
    • Cómo integrarlo con otros bots

trybackprop

  • En una semana cualquiera, normalmente hago lo siguiente:
  • 15%: reuniones de discusión técnica o 1:1
    • Generalmente hablamos de ideas, planes sobre modelos o soporte a productos de ML
  • 40%: desarrollo de ML
    • En etapas iniciales del proyecto, entender los requerimientos del producto
    • Discutir con el equipo qué modelos o algoritmos de ML podrían ayudar a alcanzar los objetivos del producto o del negocio
    • Recolectar datasets existentes de analistas y científicos de datos
    • Crear pipelines que usen esos datasets para generar conjuntos de entrenamiento y validación
    • Mientras espero a que se llenen esos conjuntos de entrenamiento/validación (puede tomar hasta 2 semanas), trabajo al mismo tiempo en otros proyectos que estén más adelantados o más atrasados en desarrollo
    • También trabajo en modelos nuevos (escritos en PyTorch), los pruebo con una pequeña cantidad de datos para evaluar el rendimiento offline y ver si se comportan como espero
    • Ejecuto algunas pruebas manuales usando el modelo para completar información del producto y verificar que el modelo tenga sentido (sin experimentos a gran escala no queda más remedio que confiar en la intuición propia y del equipo)
    • Cuando ya están listos los datasets de entrenamiento/validación, entreno el modelo con un gran volumen de datos, reviso los resultados offline y, si hay problemas, ajusto el modelo o cambio la arquitectura
    • Si los resultados offline son buenos o prometedores, despliego el modelo a producción para experimentar
    • Al mismo tiempo, puedo modificar el código de producto/infraestructura para probar el nuevo modelo que construí
    • Ejecuto el experimento y aumento el tráfico lentamente hasta llegar a una asignación de 1-5%, y lo dejo corriendo por varias semanas o un mes
    • Mientras tanto, observo los resultados y monitoreo todos los pipelines relevantes para asegurar que el modelo se esté entrenando correctamente y que factores inesperados de infraestructura / bugs / producto no alteren los resultados del experimento
    • Si los resultados se ven como esperaba y coinciden con la hipótesis inicial, discuto con el equipo si lo lanzamos y, si decidimos hacerlo, ¡se lanza!
      • (Nota: el desarrollo del modelo incluye escribir features, preparar datasets, análisis, crear el modelo de ML en sí e implementar cambios en código de producto/infraestructura)
  • 20%: mantenimiento
    • Que esté desarrollando un modelo nuevo no significa que ignore los ya existentes
    • Los reviso todos los días para asegurarme de que no estén degradándose ni cambiando su rendimiento de formas inesperadas
    • También arreglo pipelines y los hago más eficientes
  • 15%: papers de investigación y aprendizaje técnico
    • El mundo de AI/ML cambia muy rápido, así que leo papers nuevos constantemente y pruebo nuevas técnicas en casa para mantenerme al día
    • Como me divierte, no se siente como una carga
    • Ni siquiera lo veo como trabajo necesario para estar actualizado
  • 10%: investigación interna
    • Uso este tiempo para aprender más sobre otros productos del equipo o de la empresa y ver cómo nuestro equipo puede ayudar o qué técnicas/métodos podemos tomar prestados de ellos
    • También uso este tiempo para anotar insights obtenidos al mirar hacia atrás el trabajo de los últimos 6 meses / 1 año

4 comentarios

 
ohyecloudy 2024-06-17

La expresión "La gente sin formación técnica me ve como un mago, y yo los veo como sacerdotes vudú" me pareció divertida.

 
nutella 2024-06-12

Datos... datos... me identifico.

 
halfenif 2024-06-10

Más o menos hacen exactamente lo que vagamente imaginaba que hacían.

 
tttttaa 2024-06-10

¡Qué interesante!