
Hosted by OCDevel · EN

Primary technology recommendations for building a customer-facing machine learning product include React and React Native for the front end, serverless platforms like AWS Amplify or GCP Firebase for authentication and basic server/database needs, and Postgres as the relational database of choice. Serverless approaches are encouraged for scalability and security, with traditional server frameworks and containerization recommended only for advanced custom backend requirements. When serverless options are inadequate, use Node.js with Express or FastAPI in Docker containers, and consider adding Redis for in-memory sessions and RabbitMQ or SQS for job queues, though many of these functions can be handled by Postgres. The machine learning server itself, including deployment strategies, will be discussed separately. Links Notes and resources at ocdevel.com/mlg/mla-13 Try a walking desk stay healthy & sharp while you learn & code Client Applications React is recommended as the primary web front-end framework due to its compositional structure, best practice enforcement, and strong community support. React Native is used for mobile applications, enabling code reuse and a unified JavaScript codebase for web, iOS, and Android clients. Using React and React Native simplifies development by allowing most UI logic to be written in a single language. Server (Backend) Options The episode encourages starting with serverless frameworks, such as AWS Amplify or GCP Firebase, for rapid scaling, built-in authentication, and security. Amplify allows seamless integration with React and handles authentication, user management, and database access directly from the client. When direct client-to-database access is insufficient, custom business logic can be implemented using AWS Lambda or Google Cloud Functions without managing entire servers. Only when serverless frameworks are insufficient should developers consider managing their own server code. Recommended traditional backend options include Node.js with Express for JavaScript environments or FastAPI for Python-centric projects, both offering strong concurrency support. Using Docker to containerize server code and deploying via managed orchestration (e.g., AWS ECS/Fargate) provides flexibility and migration capability beyond serverless. Python's FastAPI is advised for developers heavily invested in the Python ecosystem, especially if machine learning code is also in Python. Database and Supporting Infrastructure Postgres is recommended as the primary relational database, owing to its advanced features, community momentum, and versatility. Postgres can serve multiple infrastructure functions beyond storage, including job queue management and pub/sub (publish-subscribe) messaging via specific database features. NoSQL options such as MongoDB are only recommended when hierarchical, non-tabular data models or specific performance optimizations are necessary. For situations requiring in-memory session management or real-time messaging, Redis is suggested, but Postgres may suffice for many use cases. Job queuing can be accomplished with external tools like RabbitMQ or AWS SQS, but Postgres also supports job queuing via transactional locks. Cloud Hosting and Server Management Serverless deployment abstracts away infrastructure operations, improving scalability and reducing ongoing server management and security burdens. Serverless functions scale automatically and only incur charges during execution. Amplify and Firebase offer out-of-the-box user authentication, database, and cloud function support, while custom authentication can be handled with tools like AWS Cognito. Managed database hosting (e.g., AWS RDS for Postgres) simplifies backups, scaling, and failover but is distinct from full serverless paradigms. Evolution of Web Architectures The episode contrasts older monolithic frameworks (Django, Ruby on Rails) with current microservice and serverless architectures. Developers are encouraged to leverage modern tools where possible, adopting serverless and cloud-managed components until advanced customization requires traditional servers. Links Client React for web client create-react-app: quick-start React setup React Bootstrap: CSS framework (alternatives: Tailwind, Chakra, MaterialUI) react-router and easy-peasy as useful plugins React Native for mobile apps Server AWS Amplify for serverless web and mobile backends GCP Firebase AWS Serverless (underlying building blocks) AWS Lambda for serverless functions ECR, Fargate, Route53, ELB for containerized deployment Database, Job-Queues, Sessions Postgres as the primary relational database Redis for session-management and pub/sub RabbitMQ or SQS for job queuing (with wrapper: Celery)

Docker enables efficient, consistent machine learning environment setup across local development and cloud deployment, avoiding many pitfalls of virtual machines and manual dependency management. It streamlines system reproduction, resource allocation, and GPU access, supporting portability and simplified collaboration for ML projects. Machine learning engineers benefit from using pre-built Docker images tailored for ML, allowing seamless project switching, host OS flexibility, and straightforward deployment to cloud platforms like AWS ECS and Batch, resulting in reproducible and maintainable workflows. Links Notes and resources at ocdevel.com/mlg/mla-12 Try a walking desk stay healthy & sharp while you learn & code Traditional Environment Setup Challenges Traditional machine learning development often requires configuring operating systems, GPU drivers (CUDA, cuDNN), and specific package versions directly on the host machine. Manual setup can lead to version conflicts, resource allocation issues, and difficulty reproducing environments across different systems or between local and cloud deployments. Tools like Anaconda and "pipenv" help manage Python and package versions, but they often fall short in managing system-level dependencies such as CUDA and cuDNN. Virtual Machines vs Containers Virtual machines (VMs) like VirtualBox or VMware allow multiple operating systems to run on a host, but they pre-allocate resources (RAM, CPU) up front and have limited access to host GPUs, restricting usability for machine learning tasks. Docker uses containerization to package applications and dependencies, allowing containers to share host resources dynamically and to access the GPU directly, which is essential for ML workloads. Benefits of Docker for Machine Learning Dockerfiles describe the entire guest operating system and software environment in code, enabling complete automation and repeatability of environment setup. Containers created from Dockerfiles use only the necessary resources at runtime and avoid interfering with the host OS, making it easy to switch projects, share setups, or scale deployments. GPU support in Docker allows machine learning engineers to leverage their hardware regardless of host OS (with best results on Windows and Linux with Nvidia cards). On Windows, enabling GPU support requires switching to the Dev/Insider channel and installing specific Nvidia drivers alongside WSL2 and Nvidia-Docker. Macs are less suitable for GPU-accelerated ML due to their AMD graphics cards, although workarounds like PlaidML exist. Cloud Deployment and Reproducibility Deploying machine learning models traditionally required manual replication of environments on cloud servers, such as EC2 instances, which is time-consuming and error-prone. With Docker, the same Dockerfile can be used locally and in the cloud (AWS ECS, Batch, Fargate, EKS, or SageMaker), ensuring the deployed environment matches local development exactly. AWS ECS is suited for long-lived container services, while AWS Batch can be used for one-off or periodic jobs, offering cost-effective use of spot instances for GPU workloads. Using Pre-Built Docker Images Docker Hub provides pre-built images for ML environments, such as nvcr.io's CUDA/cuDNN images and HuggingFace's transformers setups, which can be inherited in custom Dockerfiles. These images ensure compatibility between key ML libraries (PyTorch, TensorFlow, CUDA, cuDNN) and reduce setup friction. Custom kitchen-sink images, like those in the "ml-tools" repository, offer a turnkey solution for getting started with machine learning in Docker. Project Isolation and Maintenance With Docker, each project can have a fully isolated environment, preventing dependency conflicts and simplifying switching between projects. Updates or configuration changes are tracked and versioned in the Dockerfile, maintaining a single source of truth for the entire environment. Modifying the Dockerfile to add dependencies or update versions ensures that local and cloud environments remain synchronized. Host OS Recommendations for ML Development Windows is recommended for local development with Docker, offering better desktop experience and driver support than Ubuntu for most users, particularly on laptops. GPU-accelerated ML is not practical on Macs due to hardware limitations, while Ubuntu is suitable for advanced users comfortable with system configuration and driver management. Useful Links Docker Instructions: Windows Dev Channel & WSL2 with nvidia-docker support Nvidia's guide for CUDA on WSL2 WSL2 & Docker odds-and-ends nvidia/cuda:10.1-cudnn7-runtime-ubuntu18.04 Docker Image huggingface/transformers-gpu ml-tools kitchen-sink Dockerfiles Machine learning hardware guidance Front-end stack + cloud-hosting info ML cloud-hosting info

Try a walking desk to stay healthy while you study or work! Show notes at ocdevel.com/mlg/32. L1/L2 norm, Manhattan, Euclidean, cosine distances, dot product Normed distances link A norm is a function that assigns a strictly positive length to each vector in a vector space. link Minkowski is generalized. p_root(sum(xi-yi)^p). "p" = ? (1, 2, ..) for below. L1: Manhattan/city-block/taxicab. abs(x2-x1)+abs(y2-y1). Grid-like distance (triangle legs). Preferred for high-dim space. L2: Euclidean. sqrt((x2-x1)^2+(y2-y1)^2. sqrt(dot-product). Straight-line distance; min distance (Pythagorean triangle edge) Others: Mahalanobis, Chebyshev (p=inf), etc Dot product A type of inner product. Outer-product: lies outside the involved planes. Inner-product: dot product lies inside the planes/axes involved link. Dot product: inner product on a finite dimensional Euclidean space link Cosine (normalized dot)

Notes and resources: ocdevel.com/mlg/29 Try a walking desk to stay healthy while you study or work! Reinforcement Learning (RL) is a fundamental component of artificial intelligence, different from purely being AI itself. It is considered a key aspect of AI due to its ability to learn through interactions with the environment using a system of rewards and punishments. Links: openai/baselines reinforceio/tensorforce NervanaSystems/coach rll/rllab Differential Computers Concepts and Definitions Reinforcement Learning (RL): RL is a framework where an "agent" learns by interacting with its environment and receiving feedback in the form of rewards or punishments. It is part of the broader machine learning category, which includes supervised and unsupervised learning. Unlike supervised learning, where a model learns from labeled data, RL focuses on decision-making and goal achievement. Comparison with Other Learning Types Supervised Learning: Involves a teacher-student paradigm where models are trained on labeled data. Common in applications like image recognition and language processing. Unsupervised Learning: Not commonly used in practical applications according to the experience shared in the episode. Reinforcement Learning vs. Supervised Learning: RL allows agents to learn independently through interaction, unlike supervised learning where training occurs with labeled data. Applications of Reinforcement Learning Games and Simulations: Deep reinforcement learning is used in games like Go (AlphaGo) and video games, where the environment and possible rewards or penalties are predefined. Robotics and Autonomous Systems: Examples include robotics (e.g., Boston Dynamics mules) and autonomous vehicles that learn to navigate and make decisions in real-world environments. Finance and Trading: Utilized for modeling trading strategies that aim to optimize financial returns over time, although breakthrough performance in trading isn't yet evidenced. RL Frameworks and Environments Framework Examples: OpenAI Baselines, TensorForce, and Intel's Coach, each with different capabilities and company backing for development. Environments: OpenAI's Gym is a suite of environments used for training RL agents. Future Aspects and Developments Model-based vs. Model-free RL: Model-based RL involves planning and knowledge of the world dynamics, while model-free is about reaction and immediate responses. Remaining Challenges: Current hurdles in AI include reasoning, knowledge representation, and memory, where efforts are ongoing in institutions like Google DeepMind for further advancement.