From bf15f3002cff53045e0e031df6fa45bc4112b4bd Mon Sep 17 00:00:00 2001 From: Joep Meindertsma Date: Mon, 13 Jan 2025 09:51:41 +0100 Subject: [PATCH 1/2] Supply chain diagram --- src/lib/components/SupplyChain.svelte | 581 +++++++++++++++++++++++++ src/posts/building-the-pause-button.md | 38 +- 2 files changed, 614 insertions(+), 5 deletions(-) create mode 100644 src/lib/components/SupplyChain.svelte diff --git a/src/lib/components/SupplyChain.svelte b/src/lib/components/SupplyChain.svelte new file mode 100644 index 00000000..f5d85b38 --- /dev/null +++ b/src/lib/components/SupplyChain.svelte @@ -0,0 +1,581 @@ + + + +
+
+

AI Chip Supply Chain

+

Click on any node to learn more about its role in the supply chain.

+
+ +
+ + + + + + + + {#each edges as [start, end]} + {@const points = calculateConnectionPoints(nodes[start], nodes[end])} + + {/each} + + + {#each Object.values(nodes) as node} +
handleNodeClick(node.id)} + on:keydown={(event) => { + if (event.key === 'Enter' || event.key === ' ') { + handleNodeClick(node.id) + } + }} + role="button" + tabindex="0" + > + {node.label} +
+ {/each} +
+ + + {#if selectedNode && nodeInfo[selectedNode]} + + {/if} + +
+
+
+ Lithography +
+
+
+ Foundry +
+
+
+ Chip Design +
+
+
+ Assembly +
+
+
+ AI Labs +
+
+
+ + diff --git a/src/posts/building-the-pause-button.md b/src/posts/building-the-pause-button.md index bf0b4184..95663f68 100644 --- a/src/posts/building-the-pause-button.md +++ b/src/posts/building-the-pause-button.md @@ -3,12 +3,18 @@ title: Building the Pause Button description: What would an AI Pause look like? How do you continue to actually prevent a superintelligence from being created? --- + + If we allow the creation of a superintelligent AI, we are [risking every single life on earth](/xrisk). When we're talking about a Pause, we're talking about [implementing an international ban on the creation of a superintelligent AI](/proposal). Some argue that it's too early to press the Pause Button (we [don't](/urgency)), but most experts seem to agree that it may be good to pause if developments go too fast. But as of now _we do not have a Pause Button_. So we should start thinking about how this would work, and how we can implement it. +_This document is a work in progress, being updated by the AISC "Building the Pause Button" team._ + ## The Race: why we need international cooperation We do not expect any single country to be able to implement a Pause. @@ -43,6 +49,8 @@ This is great news for governance. Through the hardware, we can regulate the training runs. Let's take a dive into the various choke points in the AI chip supply chain. + + #### Silicon wafers: Shin-Etsu, Sumco, Siltronic #### Lithography: ASML & SMEE @@ -70,11 +78,6 @@ ASML's EUV machines use mirrors and lenses made by the German company Zeiss. In 2016, ASML [bought](https://optics.org/news/7/11/11) a 25% stake in Zeiss, and the two companies have a very close relationship. It is likely that no other company is able to produce these optics. -#### Interconnect & Packaging: ASE - -When a chip die exits a fab, it needs to be "packaged". -ASE is probably the largest interconnect company for AI chips. - #### Fabrication: TSMC, Samsung amd SMIC Building a "fab" (a chip factory) is astonishingly difficult: it has zero-tolerance for dust particles, requires the most expensive high-tech equipment, and has a very complex supply chain. @@ -93,6 +96,19 @@ and is now able to produce 7nm AI chips (about three years behind the 4nm proces AI chips require a lot of HBMs (High Bandwidth Memory), which is the most advanced memory type. Only a few companies can produce them. +#### Probe machines + +Probe machines are used to test the chips after they are manufactured. + +#### Testing: Advantest, Teradyne + +After the chips are packaged, they need to be tested. + +#### Interconnect & Packaging: ASE + +When a chip die exits a fab, it needs to be "packaged". +ASE is probably the largest interconnect company for AI chips. + #### AI Chip design: Nvidia, AMD, Intel, Google, Apple The most famous company names on this page are all chip designers. @@ -132,6 +148,14 @@ Other proposed methods include: An international insitution could be set up to monitor these verification methods, and to enforce the Pause. +## Roles of nations + +- **Taiwan**: has TSMC, the leading AI chip manufacturer. +- **Netherlands**: has ASML, the leading AI chip lithography manufacturer. Practically the only _true monopoly_ in the AI chip supply chain. Through export controls of EUV machines, the Netherlands can effectively control the AI chip supply chain. +- **Germany**: has Zeiss, the leading AI chip optics manufacturer. +- **China**: has SMIC and SMEE, which are getting closer to the leading edge of AI chip manufacturing. +- **USA**: leading in chip design with companies like Nvidia, AMD, Intel, Google, Apple. + ## Software Governance Physical chips are our primary focus, but we may also want to regulate _software_ used to train and run AI models. @@ -158,3 +182,7 @@ Software is just information - it can be copied and distributed very easily. Nonetheless, we have banned information before. Child pornography, for example, is illegal to make, illegal to distribute, and illegal to possess. The same enforcement mechanisms could be used to regulate dangerous AI software. + +## Recommendation + +- **Netherlands**: get ASML to From 167f929b68e90b7e0dfece96593b5cdea2d20b15 Mon Sep 17 00:00:00 2001 From: Joep Meindertsma Date: Tue, 14 Jan 2025 15:18:32 +0100 Subject: [PATCH 2/2] WIP supply chain --- src/lib/components/SupplyChain.svelte | 308 +++++++++++++++++--------- 1 file changed, 199 insertions(+), 109 deletions(-) diff --git a/src/lib/components/SupplyChain.svelte b/src/lib/components/SupplyChain.svelte index f5d85b38..76cea203 100644 --- a/src/lib/components/SupplyChain.svelte +++ b/src/lib/components/SupplyChain.svelte @@ -3,9 +3,9 @@ interface Node { id: string label: string - x: number - y: number - category: 'raw' | 'litho' | 'fab' | 'design' | 'assembly' | 'end' + category: 'litho' | 'fab' | 'design' | 'assembly' | 'end' + x?: number + y?: number } interface NodeInfo { @@ -17,53 +17,90 @@ // Reactive state let selectedNode: string | null = null - // Node definitions - const nodes: Record = { - L1: { id: 'L1', label: 'ASML', x: 20, y: 30, category: 'litho' }, - L2: { id: 'L2', label: 'Zeiss', x: 20, y: 60, category: 'litho' }, - L3: { id: 'L3', label: 'SMEE', x: 20, y: 90, category: 'litho' }, - W1: { id: 'W1', label: 'TSMC', x: 40, y: 15, category: 'fab' }, - W2: { id: 'W2', label: 'Samsung', x: 40, y: 40, category: 'fab' }, - W3: { id: 'W3', label: 'Intel', x: 40, y: 65, category: 'fab' }, - D1: { id: 'D1', label: 'NVIDIA', x: 60, y: 25, category: 'design' }, - D2: { id: 'D2', label: 'AMD', x: 60, y: 50, category: 'design' }, - D3: { id: 'D3', label: 'Intel AI', x: 60, y: 75, category: 'design' }, - A1: { id: 'A1', label: 'Foxconn', x: 80, y: 35, category: 'assembly' }, - A2: { id: 'A2', label: 'ASE Group', x: 80, y: 65, category: 'assembly' }, - E1: { id: 'E1', label: 'Research Labs', x: 95, y: 30, category: 'end' }, - E2: { id: 'E2', label: 'Tech Companies', x: 95, y: 50, category: 'end' }, - E3: { id: 'E3', label: 'Universities', x: 95, y: 70, category: 'end' }, - W4: { id: 'W4', label: 'SMIC', x: 40, y: 90, category: 'fab' }, - D4: { id: 'D4', label: 'Huawei', x: 60, y: 90, category: 'design' } + // Define column positions (as percentages) + const columns = { + litho: 15, + fab: 35, + design: 55, + assembly: 75, + end: 95 + } + + // Helper function to calculate y position based on index in category + function getYPosition(index: number, totalInCategory: number): number { + const spacing = 80 / (totalInCategory + 1) + return 10 + (index + 1) * spacing } + // First, define the nodes without initial positions + const nodes: Record = { + ASML: { id: 'ASML', label: 'ASML', category: 'litho' }, + ZEISS: { id: 'ZEISS', label: 'Zeiss', category: 'litho' }, + SMEE: { id: 'SMEE', label: 'SMEE', category: 'litho' }, + TSMC: { id: 'TSMC', label: 'TSMC', category: 'fab' }, + SAMSUNG: { id: 'SAMSUNG', label: 'Samsung', category: 'fab' }, + INTEL_FAB: { id: 'INTEL_FAB', label: 'Intel', category: 'fab' }, + SMIC: { id: 'SMIC', label: 'SMIC', category: 'fab' }, + NVIDIA: { id: 'NVIDIA', label: 'Nvidia', category: 'design' }, + AMD: { id: 'AMD', label: 'AMD', category: 'design' }, + GROQ: { id: 'GROQ', label: 'Groq', category: 'design' }, + INTEL: { id: 'INTEL', label: 'Intel', category: 'design' }, + CEREBRAS: { id: 'CEREBRAS', label: 'Cerebras', category: 'design' }, + HUAWEI: { id: 'HUAWEI', label: 'Huawei', category: 'design' }, + ASE: { id: 'ASE', label: 'ASE', category: 'assembly' }, + ASE_GROUP: { id: 'ASE_GROUP', label: 'ASE Group', category: 'assembly' }, + OPENAI: { id: 'OPENAI', label: 'OpenAI', category: 'end' }, + GOOGLE: { id: 'GOOGLE', label: 'Google', category: 'end' }, + META: { id: 'META', label: 'Meta', category: 'end' }, + XAI: { id: 'XAI', label: 'X.ai', category: 'end' } + } + + // Then group and position them + const nodesByCategory: Record = {} + Object.values(nodes).forEach((node) => { + if (!nodesByCategory[node.category]) { + nodesByCategory[node.category] = [] + } + nodesByCategory[node.category].push(node) + }) + + // Update node positions + Object.entries(nodesByCategory).forEach(([category, categoryNodes]) => { + categoryNodes.forEach((node, index) => { + node.x = columns[category as keyof typeof columns] + node.y = getYPosition(index, categoryNodes.length) + }) + }) + // Edge definitions const edges = [ - ['L1', 'W1'], - ['L1', 'W2'], - ['L1', 'W3'], - ['L2', 'L1'], - ['W1', 'D1'], - ['W1', 'D2'], - ['W2', 'D1'], - ['W2', 'D2'], - ['W3', 'D3'], - ['D1', 'A1'], - ['D1', 'A2'], - ['D2', 'A1'], - ['D2', 'A2'], - ['D3', 'A2'], - ['A1', 'E1'], - ['A1', 'E2'], - ['A2', 'E1'], - ['A2', 'E3'], - ['L3', 'W4'], - ['W4', 'D4'] + ['ASML', 'TSMC'], + ['ASML', 'SAMSUNG'], + ['ASML', 'INTEL_FAB'], + ['ZEISS', 'ASML'], + ['TSMC', 'NVIDIA'], + ['TSMC', 'AMD'], + ['TSMC', 'CEREBRAS'], + ['SAMSUNG', 'NVIDIA'], + ['SAMSUNG', 'AMD'], + ['SAMSUNG', 'GROQ'], + ['INTEL_FAB', 'INTEL'], + ['NVIDIA', 'ASE'], + ['NVIDIA', 'ASE_GROUP'], + ['AMD', 'ASE'], + ['AMD', 'ASE_GROUP'], + ['INTEL', 'ASE_GROUP'], + ['ASE', 'OPENAI'], + ['ASE', 'GOOGLE'], + ['ASE_GROUP', 'OPENAI'], + ['ASE_GROUP', 'META'], + ['SMEE', 'SMIC'], + ['SMIC', 'HUAWEI'] ] // Node information const nodeInfo: Record = { - L1: { + ASML: { title: 'ASML', description: 'Global monopoly in EUV lithography machines required for advanced chip manufacturing.', @@ -75,7 +112,7 @@ 'Subject to export controls from NL government' ] }, - L2: { + ZEISS: { title: 'Zeiss', description: "Exclusive provider of critical optical systems for ASML's EUV machines.", details: [ @@ -86,7 +123,7 @@ 'Essential for advanced chip manufacturing' ] }, - W1: { + TSMC: { title: 'TSMC (Taiwan Semiconductor)', description: "World's largest dedicated semiconductor foundry, specializing in advanced process nodes.", @@ -97,7 +134,7 @@ '~54% market share in foundry services' ] }, - W2: { + SAMSUNG: { title: 'Samsung Semiconductor', description: 'Major player in memory and logic chip manufacturing with advanced facilities.', details: [ @@ -107,7 +144,7 @@ '~17% foundry market share' ] }, - W3: { + INTEL_FAB: { title: 'Intel Foundry', description: 'Traditional CPU giant expanding into foundry services with IDM 2.0 strategy.', details: [ @@ -117,7 +154,7 @@ 'Focus on regaining technology leadership' ] }, - D1: { + NVIDIA: { title: 'NVIDIA', description: 'Leader in GPU design and AI accelerator chips.', details: [ @@ -127,7 +164,7 @@ 'Pioneered CUDA ecosystem' ] }, - D2: { + AMD: { title: 'AMD', description: 'Major chip designer competing in CPU, GPU, and AI accelerator markets.', details: [ @@ -137,7 +174,7 @@ 'ROCm software ecosystem' ] }, - D3: { + INTEL: { title: 'Intel AI', description: "Intel's dedicated AI chip design division.", details: [ @@ -147,7 +184,7 @@ 'OneAPI software platform' ] }, - A1: { + ASE: { title: 'Foxconn', description: "World's largest electronics manufacturer and assembler.", details: [ @@ -157,7 +194,7 @@ 'Handles final product assembly' ] }, - A2: { + ASE_GROUP: { title: 'ASE Group', description: "World's largest semiconductor packaging and testing provider.", details: [ @@ -167,38 +204,37 @@ 'Facilities in multiple countries' ] }, - E1: { - title: 'Research Labs', - description: - 'Dedicated AI research laboratories pushing the boundaries of artificial intelligence.', + OPENAI: { + title: 'OpenAI', + description: 'Leading AI research company focused on AGI development.', details: [ - 'Advanced AI model development', - 'Specialized research facilities', - 'High-performance computing clusters', - 'Focus on fundamental AI research' + 'Developed GPT-4, DALL-E', + 'Major compute infrastructure', + 'Partnership with Microsoft', + 'Focus on AI safety research' ] }, - E2: { - title: 'Tech Companies', - description: 'Commercial organizations developing and deploying AI solutions.', + GOOGLE: { + title: 'Google DeepMind', + description: 'Pioneer in AI research and large language models.', details: [ - 'Product-focused AI development', - 'Large-scale model training', - 'Applied AI research', - 'Commercial applications' + 'Developed Gemini, PaLM', + 'Massive TPU infrastructure', + 'Leading AI research lab', + 'Focus on multimodal AI' ] }, - E3: { - title: 'Universities', - description: 'Academic institutions conducting AI research and education.', + META: { + title: 'Meta AI', + description: 'Major AI research organization with open source focus.', details: [ - 'Academic research programs', - 'Student training facilities', - 'Collaborative research projects', - 'Theoretical and applied research' + 'Developed LLaMA models', + 'Large GPU clusters', + 'Open source contributions', + 'Focus on generative AI' ] }, - W4: { + SMIC: { title: 'SMIC (Semiconductor Manufacturing International Corporation)', description: "China's largest chip manufacturer, developing advanced process nodes.", details: [ @@ -209,7 +245,7 @@ 'Located in mainland China' ] }, - D4: { + HUAWEI: { title: 'Huawei', description: 'Chinese technology company developing AI chips through its HiSilicon division.', details: [ @@ -220,7 +256,7 @@ 'Major investments in AI development' ] }, - L3: { + SMEE: { title: 'SMEE (Shanghai Micro Electronics Equipment)', description: 'Chinese lithography equipment manufacturer developing DUV technology.', details: [ @@ -230,12 +266,36 @@ 'Cannot yet produce EUV machines', 'Significant government support' ] + }, + GROQ: { + title: 'Groq', + description: 'AI chip startup focusing on tensor processing units.', + details: [ + 'Developed LPU architecture', + 'Uses older 14nm process', + 'Claims superior inference speed', + 'Founded by former Google TPU lead' + ] + }, + CEREBRAS: { + title: 'Cerebras', + description: 'Developer of the largest AI chip in the world.', + details: ['Specialized for AI inference', 'Uses TSMC 5nm nodes'] + }, + XAI: { + title: 'X.ai', + description: 'New AI company developing large language models.', + details: [ + 'Developing Grok model', + 'Significant compute investment', + 'Focus on unrestricted AI', + 'Founded by Elon Musk' + ] } } // Category styling const categoryColors = { - raw: 'node-raw', litho: 'node-litho', fab: 'node-fab', design: 'node-design', @@ -245,20 +305,21 @@ // Calculate connection points on node edges function calculateConnectionPoints(startNode: Node, endNode: Node) { - // Node dimensions in percentages (the colored rectangle) - const nodeWidth = 2 // 50px in ~2500px container - - // Calculate vector between nodes - const dx = endNode.x - startNode.x - - // For this layout, we know connections are primarily horizontal - // Calculate intersection with vertical node borders - const startX = startNode.x + (dx > 0 ? nodeWidth / 2 : -nodeWidth / 2) - const startY = startNode.y - const endX = endNode.x + (dx > 0 ? -nodeWidth / 2 : nodeWidth / 2) - const endY = endNode.y - - return { startX, startY, endX, endY } + // Add default values if x/y are undefined + const startX = startNode.x ?? 0 + const startY = startNode.y ?? 0 + const endX = endNode.x ?? 0 + const endY = endNode.y ?? 0 + + const dx = endX - startX + const nodeWidth = 2 + + return { + startX: startX + (dx > 0 ? nodeWidth / 2 : -nodeWidth / 2), + startY, + endX: endX + (dx > 0 ? -nodeWidth / 2 : nodeWidth / 2), + endY + } } // Click handler function handleNodeClick(id: string) { @@ -276,6 +337,14 @@ closeModal() } } + + // Add this function to handle backdrop clicks + function handleBackdropClick(event: MouseEvent) { + // Only close if clicking the backdrop (dialog element), not its contents + if (event.target === event.currentTarget) { + closeModal() + } + } @@ -336,28 +405,30 @@ {#if selectedNode && nodeInfo[selectedNode]} -