the_dreaded_OOM

the_dreaded_OOM t1_j1tu3zu wrote

Machine learning is as much a human discipline as a technical one. Projects take time and having a company that's supportive of time, error and experimentation is key. This is obviously difficult in some companies and sounds like the key challenge in yours.

I've found getting to a solution by looking at off the shelf projects the fastest approach. You obviously have a technical background and want to get right in there... but here are my suggestions before you head deep into the coding. Finding the balance between focus on the business objective and implementing something quickly that's 90% good is the key.

  1. [Watch this] Review this course by Cassie Kozyrkov - it's high level principles and an overview of the common approaches and mistakes. https://www.youtube.com/playlist?list=PLRKtJ4IpxJpDxl0NTvNYQWKCYzHNuy2xG
  2. Afterwards, CLEARLY identify a SPECIFIC problem in the business where if predictive capability were applied, it would save a lot of time and money. Common use cases in manufacturing are: Quality control, predictive maintenance, supply chain optimisation, process optimisation, demand forecasting.

Begin floating the idea and relationship building from anyone who is using, has data on or is paying for the system:

  1. Start to foster stakeholder buy in with the USERS of the system. Establish relationships - try and figure out what happens when you make the prediction, what is the action that people will take. How does that action translate into $$ - make estimates.
  2. Try and figure out from the USERS what factors they use to make decisions. The ease of your project will depend on how easy these factors are to measure.

Once you've formulated your project and have buy in, you can now narrow down the class of problems you want to focus on e.g. Regression, Classification, Segmentation, Time series etc. and the domain of these problems. e.g. NLP, Computer Vision etc.

Here are my suggestions when you head into the technical stuff:

  1. Learn Python - sorry R wont really cut it.
  2. Do the course at https://fullstackdeeplearning.com/course/2022/ it will teach you about applying your project end-to-end.

OK, now you should refine your research and learning to get toward your solution - sometimes you can do this in conjunction with above.

  1. Search for your exact application, focus and domain followed by the term "machine learning" on Google. Chances are you'll find a solution.
  2. Replicate the solutions.
  3. Evaluate how resource intensive it is to collect your own high quality labelled data. If you cannot collect data you cannot do this project. Avoid state of the art, go for solutions with a few resources and options .e.g. YOLO for computer vision object detection is widely understood. Note: I'll highlight a point here: the data can't just be a readout of a SCADA system if you don't have trust, redundancy, understanding what will happen if that sensor gets knocked or fails.
  4. Follow the principles in the course above and replicate it to build you own:
    1. Build a microservice for processing
    2. Build a user interface using Gradio or Streamlit libraries
    3. Host it somewhere

Finally the hardest part

  1. Train people
  2. Be there physically next to the users until they have used it and trust the data.
  3. Work out a plan for when the model doesn't give the right prediction.
  4. Find out all your assumptions from previous steps were in some way wrong.

If they're right, well done! You're doing better than most in this profession. Now you can:

  1. Establish pipelines for CI/CD
  2. Collect data on edge / new cases / errors.
  3. Script out how to label, ingest and output new models.
  4. Benchmark model output against previous versions
  5. Ensure edge cases are tested
  6. Roll out using a shadow, A/B, mirrored deployment strategy..
  7. Rinse, repeat.

The courses recommended will expand more on the above. Good luck!

2