Code Conversations

Code Conversations

By ali heydari moghaddamEducation
Download on the App Store

Code Conversations episodes

  • A Team-Centric Approach: Kubernetes as Foundation, Not Platform

    Manuel Pais discusses how many organizations see Kubernetes as “the” platform, rather than just a technical foundation for a true internal platform. Successful Kubernetes adoption requires thinking about what a platform really means and learning which team structures and interactions work well. And evolve them over time.


    https://www.youtube.com/watch?v=Iu_T3X-bPqE

    22 min
  • Designing Teams for Modern Software Systems

    Recent research summarised in the book Accelerate points to a set of practices that lead to high software development organisation performance. Simultaneously, research from the Santa Fe institute on Complex Adaptive Systems over the last 20 years seems to point to a grand unified theory of organisational design. So have we cracked it? Do we now have the answer to the question: how do we create and scale high performing software and organisations?

    In this talk, James explores the relationships between team structure, software architecture and the emergent phenomenon of complexity science.


    https://www.youtube.com/watch?v=uAwJEFLJunk

    20 min
  • Platform as a Product: Fundamentals and Best Practices

    Savvy organisations are discovering the value of treating their internal platforms as products. But what does it mean to treat a “platform as a product”? What benefits does this give, and why would an organisation adopt this approach?

    In this talk, Manuel Pais, co-author of the book Team Topologies, explains why the platform-as-product approach can be a game-changer for organisations building and running software-enabled products and services. Using ideas & patterns from Team Topologies - including Thinnest Viable Platform, team cognitive load, and the evolutionary team interaction modes - Manuel explains how organisations like Adidas and Uswitch have successfully used the platform-as-product model to accelerate and simplify the delivery of software at scale.
    Speaker: Manuel Pais, Co-Author Team Topologies.
    Bio: Manuel Pais is co-author of Team Topologies: organizing business and technology teams for fast flow. Recognized by TechBeacon as a DevOps thought leader, Manuel is an independent IT organizational consultant and trainer, focused on team interactions, delivery practices and accelerating flow. Manuel is also a LinkedIn instructor on accelerating Continuous Delivery in the enterprise.


    https://www.youtube.com/watch?v=b8YHCDMxqfg

    24 min
  • Team Topologies, Cognitive Load & Complex Systems

    The "Engineering Room" is a monthly series of conversations with people who are influential in the software industry. In this episode Dave Farley, author of "Continuous Delivery", "Modern Software Engineering" and others, talks to Matthew Skelton co-author of one of the most significant software books of the last 10 years - “Team Topologies”, about the ingredients for long-term, viable, sustainable and understandable software development.

    Matthew Skelton is co-author of "Team Topologies: organizing business and technology teams for fast flow". He is Head of Consulting at Conflux and specialises in Continuous Delivery, operability, and organisation dynamics for modern software systems.
    In this conversation with Dave, he talks about the ecosystem necessary to build and nurture software, and the wide range of topics that impact on the effectiveness, and performance of development teams. The approach that his book "Team Topologies" describes is to use team structure as a tool, guided by the idea of managing the cognitive load of the team. This talk ranges from how to deal with the complex adaptive system that we inhabit when undertaking software development, to the structure of software development being more like an ant colony than an organised, predictable hierarchy.


    https://www.youtube.com/watch?v=vIcp9zDs4EI

    25 min
  • Building Successful Platform Teams

    What is a platform team, and how do you build effective platforms? Platforms are often an important part of the strategy to scale software development beyond small single teams. Dividing work up so that common behaviours and services can be shared, rather than every service team implementing their own version, is a big gain, but it can also be a big cost. Coupling between teams is one of the biggest causes of problems when trying to build software on larger scales.

    In this episode, Dave Farley, author of "Continuous Delivery" and “Modern Software Engineering” describes the pitfalls common to platform teams, the principles that are important for platform engineering, and the strategic goals that platform teams can use to guide their decisions and some tips for platform teams that help them insulate their users from changes in their services.


    https://www.youtube.com/watch?v=_zH7TIXcjEs

    12 min
  • Team Topologies

    Matthew and Manuel's excellent book Team Topologies described the challenges and proposed patterns for organizing teams effectively.

    We'll explore their ideas, what patterns are working, and how they might look on Flight Level 2 and 3.


    https://www.youtube.com/watch?v=ckGjOkMTGKo

    19 min
  • What are AI Agents?

    AI agents are a type of compound AI system that uses a large language model (LLM) to control its logic. Compound AI systems combine models and other components to solve problems, and they are more adaptable and effective than models alone.

    Here are some key points about AI agents from the sources:

    • Compound AI Systems: These systems combine different components, including models, programmatic elements, and tools, to solve complex tasks. They are modular and can be adapted more quickly than monolithic models.
    • Control Logic: The path that a program takes to answer a query is known as its control logic. This can be defined programmatically or by an LLM.
    • Agentic Approach: This approach uses an LLM to manage the logic of a system. The LLM is prompted to create a plan, reason through each step, and use tools to solve problems.
    • Reasoning and Acting: LLM agents can reason through complex problems and use external tools to act on their plans. Tools can be search engines, calculators, other language models, or any external program.
    • Memory: Agents can access and use memory to store conversation history, internal logs of thinking, and other data.
    • ReACT: This is a popular method of configuring agents that combines reasoning and acting. The agent will plan, act using tools, observe results, and iterate on the plan as needed.
    • Sliding Scale of Autonomy: AI systems can be configured with different degrees of autonomy. For narrow, well-defined problems, a programmatic approach may be more efficient, while for complex tasks, an agentic approach can be helpful.
    • The sources suggest that AI agents are a rapidly developing technology that combines system design and agentic behavior.


      https://youtu.be/F8NKVhkZZWI?si=q0dVZ1juEjPLi5s3

      16 min
    • Scaling AI Model Training and Inferencing Efficiently with PyTorch

      https://youtu.be/85RfazjDPwA?si=TM2RugT9QEd1UOZj


      Comprehensive Overview of PyTorch Tools for Scaling AI Models

      Scaling AI models often involves adding more layers to neural networks to enhance their ability to capture data nuances and execute complex tasks. However, this scaling process demands increased memory and computational power. To address these challenges, PyTorch offers tools like Distributed Data Parallel (DDP) that distribute the training workload across multiple GPUs, enabling faster model training.

      Distributed Data Parallel (DDP) comprises three key steps:

      1. Forward Pass: Data is passed through the model to compute the loss.
      2. Backward Pass: The computed loss is back propagated to determine gradients.
      3. Synchronization Step: Gradients calculated from each replica are communicated and synchronized.
      4. A crucial advantage of DDP lies in its ability to overlap computation and communication, enabling back propagation to occur concurrently with gradient communication, maximizing GPU engagement. This efficient process involves dividing the model into segments referred to as "buckets". As the gradients for each bucket are calculated, the gradients of the preceding buckets are simultaneously synchronized.

        While DDP proves effective for models that fit on a single GPU, larger models, like the 30 billion or 70 billion parameter Llama models, necessitate a different approach. Fully Sharded Data Parallel (FSDP) tackles this challenge by fragmenting the model into smaller units, called "shards," and distributing these shards across multiple GPUs.

        FSDP employs a mechanism similar to DDP, but its operations are performed at the unit level rather than the entire model level. During the forward pass, units are gathered, computations are performed, and memory is released before proceeding to the next unit, ensuring optimal resource utilization. In the backward pass, units are gathered again, back propagation is computed, and gradients are synchronized across the GPUs responsible for specific portions of the model. Like DDP, FSDP leverages the overlap of computation and communication to maintain continuous GPU activity, thereby maximizing efficiency.

        Training these large-scale models typically necessitates high-performance computing (HPC) systems equipped with high-speed interconnects like InfiniBand. However, training can also be effectively conducted on more prevalent Ethernet networks using a technique called "rate limiting," developed through a collaborative effort between IBM and the PyTorch community. Rate limiters optimize GPU memory management, striking a balance between communication and computation overlap. This optimization reduces communication demands per computation step, enabling increased computation with consistent communication.

        PyTorch's widespread adoption is largely attributed to its "eager mode," which provides a flexible and dynamic programming environment closely aligned with Python's structure. However, this flexibility can lead to GPU idle time, especially when handling larger models. This inefficiency arises because instructions are queued separately on the CPU and GPU, causing delays as the GPU waits for instructions from the CPU.

        26 min

      About Code Conversations

      From the publisher's feed

      Code Conversations, is a podcast for software developers, engineers, and tech enthusiasts of all levels. Hosted by a seasoned developer with nearly 20 years of experience, each episode dives deep into…