<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>郭耀华</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://www.guoyaohua.com/</id>
  <link href="https://www.guoyaohua.com/" rel="alternate"/>
  <link href="https://www.guoyaohua.com/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, 郭耀华</rights>
  <subtitle>欲穷千里目，更上一层楼。</subtitle>
  <title>郭耀华's Blog | 深度学习、机器学习领域技术博客</title>
  <updated>2026-05-08T14:33:33.445Z</updated>
  <entry>
    <author>
      <name>郭耀华</name>
    </author>
    <category term="Artificial Intelligence" scheme="https://www.guoyaohua.com/categories/Artificial-Intelligence/"/>
    <category term="AI" scheme="https://www.guoyaohua.com/tags/AI/"/>
    <category term="LLM" scheme="https://www.guoyaohua.com/tags/LLM/"/>
    <category term="大模型" scheme="https://www.guoyaohua.com/tags/%E5%A4%A7%E6%A8%A1%E5%9E%8B/"/>
    <category term="Transformer" scheme="https://www.guoyaohua.com/tags/Transformer/"/>
    <category term="FlashAttention" scheme="https://www.guoyaohua.com/tags/FlashAttention/"/>
    <category term="Attention" scheme="https://www.guoyaohua.com/tags/Attention/"/>
    <category term="CUDA" scheme="https://www.guoyaohua.com/tags/CUDA/"/>
    <category term="GPU" scheme="https://www.guoyaohua.com/tags/GPU/"/>
    <category term="深度学习" scheme="https://www.guoyaohua.com/tags/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/"/>
    <id>https://www.guoyaohua.com/flash-attention-explained.html</id>
    <link href="https://www.guoyaohua.com/flash-attention-explained.html"/>
    <published>2026-04-28T21:00:00.000Z</published>
    <summary>
      <![CDATA[<center>FlashAttention 是现代大模型训练与推理中最重要的底层优化之一。它并没有改变注意力机制的数学结果，也不是近似算法，却能显著降低显存占用、提升计算速度。本文从标准 Attention 的显存瓶颈讲起，用图解方式拆开 FlashAttention 的核心思想：<strong>IO-aware、分块计算、在线 Softmax、SRAM 复用、反向重算</strong>。看完这篇，你会真正明白它为什么快、为什么省、什么时候有效、什么时候不明显。</center>]]>
    </summary>
    <title>【AI】FlashAttention 详解：为什么它能让大模型注意力计算又快又省显存？</title>
    <updated>2026-05-08T14:33:33.445Z</updated>
  </entry>
  <entry>
    <author>
      <name>郭耀华</name>
    </author>
    <category term="Artificial Intelligence" scheme="https://www.guoyaohua.com/categories/Artificial-Intelligence/"/>
    <category term="AI" scheme="https://www.guoyaohua.com/tags/AI/"/>
    <category term="LLM" scheme="https://www.guoyaohua.com/tags/LLM/"/>
    <category term="大模型" scheme="https://www.guoyaohua.com/tags/%E5%A4%A7%E6%A8%A1%E5%9E%8B/"/>
    <category term="Transformer" scheme="https://www.guoyaohua.com/tags/Transformer/"/>
    <category term="深度学习" scheme="https://www.guoyaohua.com/tags/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/"/>
    <category term="注意力机制" scheme="https://www.guoyaohua.com/tags/%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6/"/>
    <category term="RoPE" scheme="https://www.guoyaohua.com/tags/RoPE/"/>
    <category term="RMSNorm" scheme="https://www.guoyaohua.com/tags/RMSNorm/"/>
    <category term="GQA" scheme="https://www.guoyaohua.com/tags/GQA/"/>
    <category term="MoE" scheme="https://www.guoyaohua.com/tags/MoE/"/>
    <category term="SwiGLU" scheme="https://www.guoyaohua.com/tags/SwiGLU/"/>
    <category term="KV Cache" scheme="https://www.guoyaohua.com/tags/KV-Cache/"/>
    <id>https://www.guoyaohua.com/llm-vs-transformer-architecture.html</id>
    <link href="https://www.guoyaohua.com/llm-vs-transformer-architecture.html"/>
    <published>2026-04-22T10:00:00.000Z</published>
    <summary>
      <![CDATA[<center>2017 年 Google 一篇《Attention Is All You Need》开启了 Transformer 时代，2022 年 ChatGPT 把"大语言模型"推到了所有人面前。但很多人有个困惑：今天的 GPT-4、Llama、Qwen、DeepSeek 还是当年那个 Transformer 吗？答案是——<strong>骨架还在，但几乎每一块零件都被换过了。</strong>本文用快递公司、流水线、车间这些日常类比，从零开始把原始 Transformer 讲透，再逐个拆解现代 LLM 在它身上做了哪些关键改造，以及为什么。看完这一篇，你就能彻底分清"Transformer"和"LLM"。</center>]]>
    </summary>
    <title>【AI】从 Transformer 到 LLM：一篇博文彻底讲清现代大模型的架构演化</title>
    <updated>2026-04-23T14:33:10.663Z</updated>
  </entry>
  <entry>
    <author>
      <name>郭耀华</name>
    </author>
    <category term="C#" scheme="https://www.guoyaohua.com/categories/C/"/>
    <category term="C#" scheme="https://www.guoyaohua.com/tags/C/"/>
    <category term=".NET" scheme="https://www.guoyaohua.com/tags/NET/"/>
    <category term="数组" scheme="https://www.guoyaohua.com/tags/%E6%95%B0%E7%BB%84/"/>
    <category term="交错数组" scheme="https://www.guoyaohua.com/tags/%E4%BA%A4%E9%94%99%E6%95%B0%E7%BB%84/"/>
    <category term="多维数组" scheme="https://www.guoyaohua.com/tags/%E5%A4%9A%E7%BB%B4%E6%95%B0%E7%BB%84/"/>
    <category term="Jagged Array" scheme="https://www.guoyaohua.com/tags/Jagged-Array/"/>
    <category term="内存布局" scheme="https://www.guoyaohua.com/tags/%E5%86%85%E5%AD%98%E5%B8%83%E5%B1%80/"/>
    <category term="动态规划" scheme="https://www.guoyaohua.com/tags/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/"/>
    <id>https://www.guoyaohua.com/csharp-jagged-vs-multidim-array.html</id>
    <link href="https://www.guoyaohua.com/csharp-jagged-vs-multidim-array.html"/>
    <published>2026-04-21T23:00:00.000Z</published>
    <summary>
      <![CDATA[<center>很多 C# 开发者在写动态规划题时会习惯性写出 <code>int[][] dp = new int[m+1][n+1]();</code>，然后被编译器一句 <strong>CS0178: Invalid rank specifier</strong> 当头浇下。这个报错的根源不是手滑，而是混淆了 C# 中两种"二维数组"的本质：交错数组 <code>int[][]</code> 与多维数组 <code>int[,]</code>。本文从这个报错出发，把两者的语法、内存布局、性能、适用场景一次讲透。</center>]]>
    </summary>
    <title>【C#】交错数组 int[][] 与多维数组 int[,] 详解：从一个 CS0178 报错说起</title>
    <updated>2026-04-21T14:53:31.580Z</updated>
  </entry>
  <entry>
    <author>
      <name>郭耀华</name>
    </author>
    <category term="C#" scheme="https://www.guoyaohua.com/categories/C/"/>
    <category term="C#" scheme="https://www.guoyaohua.com/tags/C/"/>
    <category term=".NET" scheme="https://www.guoyaohua.com/tags/NET/"/>
    <category term="泛型" scheme="https://www.guoyaohua.com/tags/%E6%B3%9B%E5%9E%8B/"/>
    <category term="接口" scheme="https://www.guoyaohua.com/tags/%E6%8E%A5%E5%8F%A3/"/>
    <category term="IList" scheme="https://www.guoyaohua.com/tags/IList/"/>
    <category term="List" scheme="https://www.guoyaohua.com/tags/List/"/>
    <category term="面向接口编程" scheme="https://www.guoyaohua.com/tags/%E9%9D%A2%E5%90%91%E6%8E%A5%E5%8F%A3%E7%BC%96%E7%A8%8B/"/>
    <category term="协变逆变" scheme="https://www.guoyaohua.com/tags/%E5%8D%8F%E5%8F%98%E9%80%86%E5%8F%98/"/>
    <id>https://www.guoyaohua.com/csharp-ilist-vs-list.html</id>
    <link href="https://www.guoyaohua.com/csharp-ilist-vs-list.html"/>
    <published>2026-04-21T22:30:00.000Z</published>
    <summary>
      <![CDATA[<center>很多 C# 开发者都有过灵魂拷问：明明 <code>List&lt;T&gt;</code> 就能搞定一切集合操作，为什么官方框架、开源库、接口规范都偏爱 <code>IList&lt;T&gt;</code>？为什么 <code>List&lt;List&lt;int&gt;&gt;</code> 不能赋给 <code>IList&lt;IList&lt;int&gt;&gt;</code>？本文从 .NET 设计规范、面向接口思想、泛型不变性规则、实战场景四个维度，把两者的本质区别与避坑指南一次性讲透。</center>]]>
    </summary>
    <title>
      <![CDATA[【C#】IList<T> 与 List<T> 到底有什么区别？为什么接口和实现类不能混用？]]>
    </title>
    <updated>2026-04-21T14:37:23.779Z</updated>
  </entry>
  <entry>
    <author>
      <name>郭耀华</name>
    </author>
    <category term="Python" scheme="https://www.guoyaohua.com/categories/Python/"/>
    <category term="Python" scheme="https://www.guoyaohua.com/tags/Python/"/>
    <category term="元组解包" scheme="https://www.guoyaohua.com/tags/%E5%85%83%E7%BB%84%E8%A7%A3%E5%8C%85/"/>
    <category term="Tuple Unpacking" scheme="https://www.guoyaohua.com/tags/Tuple-Unpacking/"/>
    <category term="原子性" scheme="https://www.guoyaohua.com/tags/%E5%8E%9F%E5%AD%90%E6%80%A7/"/>
    <category term="二叉树" scheme="https://www.guoyaohua.com/tags/%E4%BA%8C%E5%8F%89%E6%A0%91/"/>
    <category term="算法" scheme="https://www.guoyaohua.com/tags/%E7%AE%97%E6%B3%95/"/>
    <category term="编程技巧" scheme="https://www.guoyaohua.com/tags/%E7%BC%96%E7%A8%8B%E6%8A%80%E5%B7%A7/"/>
    <id>https://www.guoyaohua.com/%E3%80%90Python%E3%80%91%E5%85%83%E7%BB%84%E8%A7%A3%E5%8C%85%E7%9A%84%E5%8E%9F%E5%AD%90%E6%80%A7%EF%BC%9A%E4%B8%BA%E4%BB%80%E4%B9%88%E4%B8%80%E8%A1%8C%E4%BA%A4%E6%8D%A2%E4%BB%A3%E7%A0%81%E6%B0%B8%E8%BF%9C%E4%B8%8D%E4%BC%9A%E4%B9%B1.html</id>
    <link href="https://www.guoyaohua.com/%E3%80%90Python%E3%80%91%E5%85%83%E7%BB%84%E8%A7%A3%E5%8C%85%E7%9A%84%E5%8E%9F%E5%AD%90%E6%80%A7%EF%BC%9A%E4%B8%BA%E4%BB%80%E4%B9%88%E4%B8%80%E8%A1%8C%E4%BA%A4%E6%8D%A2%E4%BB%A3%E7%A0%81%E6%B0%B8%E8%BF%9C%E4%B8%8D%E4%BC%9A%E4%B9%B1.html"/>
    <published>2026-04-21T21:00:00.000Z</published>
    <summary>
      <![CDATA[<center>在 Python 编程中，`a, b = b, a` 这种简洁的交换写法人人都用，但你是否想过：为什么它永远不会出现"值被中途覆盖"的问题？尤其在处理二叉树节点这种复杂对象时，它依然能稳定运行。本文将以"翻转二叉树"为例，彻底搞懂元组解包的原子性，以及它如何帮我们规避其他语言中常见的坑。</center>]]>
    </summary>
    <title>【Python】元组解包的原子性：为什么一行交换代码永远不会乱？</title>
    <updated>2026-04-21T14:14:21.872Z</updated>
  </entry>
  <entry>
    <author>
      <name>郭耀华</name>
    </author>
    <category term="Deep Learning" scheme="https://www.guoyaohua.com/categories/Deep-Learning/"/>
    <category term="DeepLearning" scheme="https://www.guoyaohua.com/tags/DeepLearning/"/>
    <id>https://www.guoyaohua.com/deeplearning-workstation.html</id>
    <link href="https://www.guoyaohua.com/deeplearning-workstation.html"/>
    <published>2026-03-31T14:51:35.348Z</published>
    <summary>
      <![CDATA[<h2 id="引言"><a href="#引言" class="headerlink" title="引言"></a>引言</h2><p>接触深度学习已经快两年了，之前一直使用<a href="https://colab.research.google.com/">Google Colab</a>和<a href="https://www.kaggle.com/kernels">Kaggle Kernel</a>提供的免费GPU（Tesla K80）训练模型（最近Google将Colab的GPU升级为<strong>Tesla T4</strong>，计算速度又提升了一个档次），不过由于内地网络的原因，Google和Kaggle连接十分不稳定，经常断线重连，一直是很令人头痛的问题，而且二者均有很多限制，例如Google Colab一个脚本运行的最长时间为12h，Kaggle的为6h，数据集上传也存在问题，需要使用一些Trick才能达成目的，模型的保存、下载等都会耗费很多精力，总之体验不是很好，不过免费的羊毛让大家撸，肯定会有一些限制，也是可以理解的。</p>
<p>对于租用云服务器，之前也尝试过，租用了一家小平台的GPU服务器，也存在一些操作上的困难，不适合程序调试，而且价格也不便宜。</p>
<p>很早之前就想要搭建一个自己的深度学习工作站，不过机器成本的昂贵，一直阻碍着我攒机计划的进行。工欲善其事，必先利其器！最近终于下定决心，置办一个深度学习工作站主机。本文将我在这段时间选择、购置硬件的心得体会，分享给大家。</p>]]>
    </summary>
    <title>深度学习工作站攒机指南</title>
    <updated>2026-03-31T14:51:35.349Z</updated>
  </entry>
  <entry>
    <author>
      <name>郭耀华</name>
    </author>
    <category term="Artificial Intelligence" scheme="https://www.guoyaohua.com/categories/Artificial-Intelligence/"/>
    <category term="AI" scheme="https://www.guoyaohua.com/tags/AI/"/>
    <category term="Agent" scheme="https://www.guoyaohua.com/tags/Agent/"/>
    <category term="Tool" scheme="https://www.guoyaohua.com/tags/Tool/"/>
    <category term="MCP" scheme="https://www.guoyaohua.com/tags/MCP/"/>
    <category term="Skill" scheme="https://www.guoyaohua.com/tags/Skill/"/>
    <category term="LLM" scheme="https://www.guoyaohua.com/tags/LLM/"/>
    <category term="大模型" scheme="https://www.guoyaohua.com/tags/%E5%A4%A7%E6%A8%A1%E5%9E%8B/"/>
    <category term="人工智能" scheme="https://www.guoyaohua.com/tags/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/"/>
    <id>https://www.guoyaohua.com/%E3%80%90AI%E3%80%91%E4%B8%80%E6%96%87%E6%90%9E%E6%87%82AI%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5%EF%BC%9AAgent%E3%80%81Tool%E3%80%81MCP%E4%B8%8ESkill%E5%85%A8%E8%A7%A3%E6%9E%90.html</id>
    <link href="https://www.guoyaohua.com/%E3%80%90AI%E3%80%91%E4%B8%80%E6%96%87%E6%90%9E%E6%87%82AI%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5%EF%BC%9AAgent%E3%80%81Tool%E3%80%81MCP%E4%B8%8ESkill%E5%85%A8%E8%A7%A3%E6%9E%90.html"/>
    <published>2026-03-13T21:00:00.000Z</published>
    <summary>
      <![CDATA[<center> 随着大语言模型（LLM）的爆发式发展，AI 领域涌现了大量新概念：Agent、Tool、MCP、Skill、RAG、Function Calling……这些术语让很多人一头雾水。本文将用最通俗易懂的方式，为你逐一拆解这些概念，并进行详细对比，帮你彻底理清它们之间的关系。</center>]]>
    </summary>
    <title>【AI】一文搞懂AI核心概念：Agent、Tool、MCP与Skill全解析</title>
    <updated>2026-03-13T14:02:12.559Z</updated>
  </entry>
  <entry>
    <author>
      <name>郭耀华</name>
    </author>
    <category term="Machine Learning" scheme="https://www.guoyaohua.com/categories/Machine-Learning/"/>
    <category term="深度学习" scheme="https://www.guoyaohua.com/tags/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/"/>
    <category term="机器学习" scheme="https://www.guoyaohua.com/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
    <category term="决策树" scheme="https://www.guoyaohua.com/tags/%E5%86%B3%E7%AD%96%E6%A0%91/"/>
    <category term="剪枝" scheme="https://www.guoyaohua.com/tags/%E5%89%AA%E6%9E%9D/"/>
    <category term="ID3" scheme="https://www.guoyaohua.com/tags/ID3/"/>
    <category term="C4.5" scheme="https://www.guoyaohua.com/tags/C4-5/"/>
    <category term="CART树" scheme="https://www.guoyaohua.com/tags/CART%E6%A0%91/"/>
    <category term="信息熵" scheme="https://www.guoyaohua.com/tags/%E4%BF%A1%E6%81%AF%E7%86%B5/"/>
    <category term="基尼指数" scheme="https://www.guoyaohua.com/tags/%E5%9F%BA%E5%B0%BC%E6%8C%87%E6%95%B0/"/>
    <category term="信息增益" scheme="https://www.guoyaohua.com/tags/%E4%BF%A1%E6%81%AF%E5%A2%9E%E7%9B%8A/"/>
    <id>https://www.guoyaohua.com/decision-tree.html</id>
    <link href="https://www.guoyaohua.com/decision-tree.html"/>
    <published>2019-11-11T22:38:58.000Z</published>
    <summary>
      <![CDATA[<h2 id="引言"><a href="#引言" class="headerlink" title="引言"></a>引言</h2><p>决策树(Decision Tree)是机器学习中一种经典的分类与回归算法。本文主要讨论用于分类的决策树。决策树模型呈树形结构，在分类问题中，决策树模型可以认为是<code>if-then</code>规则的集合，也可以认为是定义在特征空间与类空间上的条件概率分布。其主要优点是模型具有可读性，分类速度快。决策树学习通常包括3个步骤：<strong>特征选择</strong>、<strong>决策树的生成</strong>和<strong>决策树的剪枝</strong>。</p>]]>
    </summary>
    <title>【机器学习】深入理解决策树算法</title>
    <updated>2026-03-31T14:51:34.299Z</updated>
  </entry>
  <entry>
    <author>
      <name>郭耀华</name>
    </author>
    <category term="Machine Learning" scheme="https://www.guoyaohua.com/categories/Machine-Learning/"/>
    <category term="深度学习" scheme="https://www.guoyaohua.com/tags/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/"/>
    <category term="机器学习" scheme="https://www.guoyaohua.com/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/"/>
    <category term="分类算法" scheme="https://www.guoyaohua.com/tags/%E5%88%86%E7%B1%BB%E7%AE%97%E6%B3%95/"/>
    <category term="评价指标" scheme="https://www.guoyaohua.com/tags/%E8%AF%84%E4%BB%B7%E6%8C%87%E6%A0%87/"/>
    <category term="分类算法评价指标" scheme="https://www.guoyaohua.com/tags/%E5%88%86%E7%B1%BB%E7%AE%97%E6%B3%95%E8%AF%84%E4%BB%B7%E6%8C%87%E6%A0%87/"/>
    <category term="准确率、精确率、召回率" scheme="https://www.guoyaohua.com/tags/%E5%87%86%E7%A1%AE%E7%8E%87%E3%80%81%E7%B2%BE%E7%A1%AE%E7%8E%87%E3%80%81%E5%8F%AC%E5%9B%9E%E7%8E%87/"/>
    <category term="P-R曲线" scheme="https://www.guoyaohua.com/tags/P-R%E6%9B%B2%E7%BA%BF/"/>
    <category term="F1指数" scheme="https://www.guoyaohua.com/tags/F1%E6%8C%87%E6%95%B0/"/>
    <category term="ROC" scheme="https://www.guoyaohua.com/tags/ROC/"/>
    <category term="AUC" scheme="https://www.guoyaohua.com/tags/AUC/"/>
    <id>https://www.guoyaohua.com/classification-metrics.html</id>
    <link href="https://www.guoyaohua.com/classification-metrics.html"/>
    <published>2019-09-01T13:01:14.000Z</published>
    <summary>
      <![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>评价指标是针对将相同的数据，输入不同的算法模型，或者输入不同参数的同一种算法模型，而给出这个算法或者参数好坏的定量指标。</p>
<p>在模型评估过程中，往往需要使用多种不同的指标进行评估，在诸多的评价指标中，大部分指标只能片面的反应模型的一部分性能，如果不能合理的运用评估指标，不仅不能发现模型本身的问题，而且会得出错误的结论。</p>
<p>最近恰好在做文本分类的工作，所以把机器学习分类任务的评价指标又过了一遍。本文将详细介绍机器学习分类任务的常用评价指标：准确率（Accuracy）、精确率（Precision）、召回率（Recall）、P-R曲线（Precision-Recall Curve）、F1 Score、混淆矩阵（Confuse Matrix）、ROC、AUC。</p>]]>
    </summary>
    <title>【机器学习】一文读懂分类算法常用评价指标</title>
    <updated>2026-03-31T14:51:33.225Z</updated>
  </entry>
  <entry>
    <author>
      <name>郭耀华</name>
    </author>
    <category term="Git" scheme="https://www.guoyaohua.com/categories/Git/"/>
    <category term="Git" scheme="https://www.guoyaohua.com/tags/Git/"/>
    <category term="Git教程" scheme="https://www.guoyaohua.com/tags/Git%E6%95%99%E7%A8%8B/"/>
    <category term="Git常用命令" scheme="https://www.guoyaohua.com/tags/Git%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/"/>
    <category term="Git常用操作" scheme="https://www.guoyaohua.com/tags/Git%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C/"/>
    <id>https://www.guoyaohua.com/Git-tutorial.html</id>
    <link href="https://www.guoyaohua.com/Git-tutorial.html"/>
    <published>2019-07-21T15:17:08.000Z</published>
    <summary>
      <![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>因为工作需求，最近又重新温习了一下Git操作，遂总结了一篇Git常用操作指南，方便日后学习查阅，本博客精简提炼了在开发过程中Git经常用到的核心命令，主要参考了《<a href="https://www.liaoxuefeng.com/wiki/896043488029600">廖雪峰老师的Git教程</a>》，希望对大家学习使用Git能带来帮助。</p>]]>
    </summary>
    <title>Git常用操作指南</title>
    <updated>2026-03-31T14:51:31.075Z</updated>
  </entry>
</feed>
