GPU-Connect

Pool and compose GPUs

  • GPU-Connect

Overview

Fungible GPU-Connect (FGC) provides the capability to dynamically compose GPUs and connect them to CPUs over a standard Ethernet network. Centralizing GPUs into a single pool that can be attached on demand eliminates the need for dedicated GPUs. This disaggregation removes the constraints of having GPUs and CPUs physically co-located within the same server and delivers GPU processing power independent of application’s CPU requirements. Expensive GPU resources are no longer left stranded. FGC allows any host server to receive physical GPU resources from a centralized GPU pool anywhere within the same data center.

I worked on the composability team at Fungible and was part of its architecture review board. I made key decisions ranging from our web architecture to our source control workflow. My day-to-day responsibilities included:

  • Implementing features and managing the team responsible for the Composer Cloud Console. The Console, consisting of 600 custom Angular components, allows users to compose pools of GPUs, servers, storage arrays, and networking infrastructure to run workloads. To manage complexity and maintain performance, I devised a micro-frontend architecture with federated auth. I used a Node.js web server to deliver content and enable lazily loading the micro apps.
  • Defining a continuous integration pipeline to automate builds, enforce test coverage and code style, and deploy new bundles to the web server. I leveraged Docker images to ensure consistent builds on Jenkins and configured the Helm templates of the various microservices the Console depends on.
  • Designing the APIs of microservices. We leverage OpenAPI to unify the capabilities of our microservices and statically generate TypeScript and Python types. By working together with the API teams to define the OpenAPI spec, we implement new features in parallel, accelerating the development lifecycle. I ensured the OpenAPI schemas were composable and the endpoints used RESTful conventions.
  • Crafting the data models of microservices. I ensured our data was efficiently structured based on our highest-volume queries and the characteristics of the entities we model. This included designing materialized views to reduce latency and defining triggers to maintain consistency.
  • Interfacing with the User Experience (UX) team to establish a design system. To successfully introduce a micro-frontend architecture, we needed a strategy to ensure the individual micro apps operated cohesively. I worked with the UX team to produce a design system and component library. By implementing the component library according to the tenants of our design system, each app can pull in a versioned NPM package containing various UI building blocks. Leveraging components from our prebuilt library gives the product a consistent look and feel and reduces the development timeline, as the custom components are already built and tested.

Details

  • Languages
    • TypeScript
    • Sass
    • HTML
  • Frameworks
    • Angular
    • Node.js
    • Kubernetes
    • Helm
    • Docker
  • Databases
    • PostgreSQL