Transformer入门:从分词、嵌入到注意力的工程落地指南
简介本资源是一份面向深度学习初学者与NLP入门者的Transformer模型精讲PDF聚焦大语言模型LLM的底层架构原理系统梳理其技术演进脉络与核心组件。内容覆盖Encoder-Only如BERT、Encoder-Decoder如T5、BART和Decoder-Only如GPT、LLaMA三大主流范式深入解析Tokenization、Embedding、Positional Encoding、Multi-Head Self-Attention及Transformer Block等关键机制并辅以ChatGLM-6B、GPT-3等真实模型参数规模对比帮助读者建立从基础结构到工业级应用的完整认知链条。资源为单文件PDF共1个文件大小3.05MB排版清晰、图示丰富、语言通俗避免复杂数学推导适合自学或课堂补充阅读。目前已有1710人学习下载是理解现代大模型为何‘大力出奇迹’不可或缺的入门基石材料。1. 这不是又一份“Attention is All You Need”复读机一份专为动手前扫清认知地雷的Transformer入门PDF你是不是也经历过——下载了十份“Transformer详解”打开后第一页就是矩阵乘法推导、QKV公式堆叠、softmax归一化证明翻三页就卡在“为什么除以√dₖ”上最后合上PDF心里只剩一个问号我到底要理解它来干啥这份《LLM基础之Transformer模型简介.pdf》2023年6月版恰恰反其道而行之它不讲反向传播不列梯度更新甚至刻意回避所有数学符号它用“人机语言转换”“AI的大脑”“记忆之地”这种工程师日常唠嗑的语言把BERT、GPT、ChatGLM-6B、LLaMA这些刷屏名词全锚定在可感知的技术动作上——比如“分词是把句子拆成单词加标点”“Embedding就是把一个单词变成4096个数字”“位置编码就是给‘Write’打上(1)、‘a’打上(2)的标签”。它真正解决的是一个被严重低估的痛点在你敲下pip install transformers之前得先知道每个模块在模型里“长什么样、动起来时在干啥、出错了会卡在哪”。它面向的不是要发论文的研究生而是刚跑通Hugging Face Demo、却对model.forward()里到底发生了什么两眼一抹黑的实战派——比如某高校NLP课程助教正带着本科生用ChatGLM-6B做文本摘要结果学生提问“为什么改了temperature输出就变疯批”又比如某公司算法岗新人接到任务“把T5微调成合同条款抽取器”却连Decoder的mask机制和Encoder的双向注意力区别都说不清。这份PDF的价值正在于它用28页纸帮你把Transformer从“黑匣子”拧开一条缝看见里面齿轮怎么咬合、油渍往哪流——不是为了修它而是为了下次调试时能精准拧紧那颗松动的螺丝。2. 从句子到向量Tokenization、Embedding与Positional Encoding的三层落地实操2.1 分词Tokenization不是切词是定义模型的“词汇表边界”很多人误以为分词就是按空格或标点切字符串但Transformer的分词本质是构建模型与人类语言之间的第一道协议接口。这份PDF明确指出三种粒度按词word-level、按字符character-level、按子词subword-level并强调“分词器可定制化训练”。这直接对应到工程落地的三个关键动作选型依据中文场景下按词切分如jieba会导致OOV未登录词爆炸按字符切分如Byte-Pair Encoding基础版则序列过长、上下文碎片化而subword如SentencePiece、WordPiece在二者间折中——ChatGLM用的是ZhipuAI自研的chatglm_tokenizerGPT系列用的是OpenAI的tiktoken。PDF里那句“用白话来说Tokenization就是要把一个句子拆成一系列的单词加标点符号”看似简单实则暗含陷阱标点是否独立成token中文顿号、书名号如何处理英文缩写如U.S.A.要不要合并实操验证脚本以Hugging Facetransformers库为例from transformers import AutoTokenizer # 加载ChatGLM-6B tokenizer需提前下载或指定本地路径 tokenizer AutoTokenizer.from_pretrained(THUDM/chatglm-6B, trust_remote_codeTrue) text 今天天气真好我们去公园散步吧 tokens tokenizer.tokenize(text) print(原始文本:, text) print(分词结果:, tokens) print(token数量:, len(tokens)) print(转ID序列:, tokenizer.convert_tokens_to_ids(tokens))输出示例[今, 天, 天, 气, 真, 好, , 我, 们, 去, 公, 园, 散, 步, 吧, ]注意中文基本按字切分但“公园”可能被合并为单token取决于词表训练数据逗号、感叹号独立成token。这解释了为何中文模型常比英文模型需要更长的max_length——因为token数更多。参数说明tokenizer.tokenize()返回的是字符串列表convert_tokens_to_ids()才转为模型可计算的整数ID。实际训练中必须用tokenizer.encode()一步到位它自动添加特殊token如[CLS]、[SEP]并截断/填充。PDF没提这点但这是新手最易翻车处若手动拼ID序列漏掉[CLS]会导致BERT类模型分类头失效。2.2 嵌入层Embedding把“苹果”变成4096维向量不是玄学而是坐标系映射PDF说“Embedding就是把一个单词转换成n个数字的集合”并给出ChatGLM-6B是4096维、GPT-3是12888维。这数字绝非随意——它直接决定模型容量上限。Embedding层本质是一张超大查找表Lookup Table表的行数词表大小vocabulary size列数embedding维度hidden_size。当输入token ID1234时模型就从这张表里取出第1234行的4096个浮点数。为什么维度这么高PDF用“猩猩脑细胞”类比很贴切低维空间如100维无法区分“苹果水果”和“苹果公司”的语义差异高维空间提供更多“方向”来承载细粒度含义。ChatGLM-6B的4096维意味着每个token有4096个独立特征通道可分别编码语法角色、情感倾向、领域属性等。实操查看Embedding权重PyTorch环境import torch from transformers import AutoModel model AutoModel.from_pretrained(THUDM/chatglm-6B, trust_remote_codeTrue) embedding_weight model.transformer.word_embeddings.weight # ChatGLM-6B的嵌入层名称 print(Embedding权重形状:, embedding_weight.shape) # 应输出 [vocab_size, 4096] print(词表大小:, embedding_weight.shape[0]) print(嵌入维度:, embedding_weight.shape[1]) # 查看苹果对应的向量需先获取其token ID apple_id tokenizer.convert_tokens_to_ids([苹, 果]) # 中文按字切分苹果是两个token if len(apple_id) 2: apple_vec_1 embedding_weight[apple_id[0]] # 苹的向量 apple_vec_2 embedding_weight[apple_id[1]] # 果的向量 print(f苹向量范数: {torch.norm(apple_vec_1).item():.3f}) print(f果向量范数: {torch.norm(apple_vec_2).item():.3f})提示torch.norm()计算向量长度正常训练后应在0.8~1.2之间。若远小于0.1说明该token在预训练中极少出现嵌入未充分学习——这正是下游任务微调时需重点关注的OOV token。关键参数hidden_size嵌入维度与vocab_size词表大小必须匹配。常见错误是加载错模型权重如用GPT-2的config加载ChatGLM权重导致vocab_size不一致model.forward()直接报IndexError: index out of range。2.3 位置编码Positional Encoding不是加法是让模型“记住谁在第几位”的时空锚点PDF用“I’m not sad, I’m happy”和“I’m not happy, I’m sad”对比直击要害没有位置信息两个句子向量完全相同。它说“位置编码是特殊的向量序列与单词向量逐元素相加”但没说清为什么必须用sin/cos函数而不是简单用[1,2,3,...]原理深挖正弦余弦函数生成的位置编码具有平移不变性——即PE(posk)可由PE(pos)线性表示。这意味着模型能泛化到训练时未见过的序列长度。而硬编码[1,2,3]不具备此性质长文本推理必崩。PDF里“方法很简单就是直接相加”是简化表述实际是embedding_vector positional_encoding_vector且二者维度严格相等如都是4096维。代码验证位置编码结构以标准Transformer为例import numpy as np import torch import matplotlib.pyplot as plt def get_positional_encoding(max_len, d_model): # 标准sin/cos位置编码实现 pe np.zeros((max_len, d_model)) position np.arange(0, max_len, dtypenp.float32)[:, np.newaxis] div_term np.exp(np.arange(0, d_model, 2, dtypenp.float32) * -(np.log(10000.0) / d_model)) pe[:, 0::2] np.sin(position * div_term) pe[:, 1::2] np.cos(position * div_term) return torch.from_numpy(pe).float() pe_matrix get_positional_encoding(max_len100, d_model4096) print(位置编码矩阵形状:, pe_matrix.shape) # [100, 4096] # 可视化前10个位置、前50维的编码值 plt.figure(figsize(10, 4)) plt.imshow(pe_matrix[:10, :50], cmapRdBu, aspectauto) plt.title(Positional Encoding (first 10 positions, 50 dims)) plt.xlabel(Dimension) plt.ylabel(Position) plt.colorbar() plt.show()现象图中呈现清晰的条纹状模式奇偶维度交替为sin/cos波形。这证明位置编码不是随机噪声而是携带了精确的序数信息——模型可通过学习这些波形的相位差推断出相对位置。避坑重点ChatGLM等部分模型使用绝对位置编码Absolute PE而T5、BART用相对位置编码Relative PE。前者要求max_position_embeddings参数必须≥训练时最长序列后者通过注意力分数内建位置偏置对长文本更鲁棒。PDF未提此差异但工程中若将ChatGLM的PE加载到T5模型会因维度不匹配直接报错。3. Transformer Block解剖Attention与Feed-Forward如何协同完成“上下文理解”3.1 多头自注意力Multi-Head Self-Attention不是“多看几遍”是并行建立N种语义关系网PDF说“多头注意力就是并行有多个注意力模块执行然后把结果合并”但没点破核心每个“头”都在学习不同的语义关系子空间。比如一个头专注主谓关系“猫-抓-老鼠”另一个头捕捉修饰关系“黑色-猫”第三个头捕获指代关系“它-指代-猫”。ChatGLM-6B的32头意味着它同时构建32张不同的“单词关系图”。QKV三矩阵的本质PDF描述“弄出来三个分身”非常形象。但需明确W_Q,W_K,W_V是可学习权重矩阵维度均为[hidden_size, hidden_size // num_heads]。输入Xshape[seq_len, hidden_size]乘W_Q得Q[seq_len, head_dim]同理得K,V。关键点在于Q和K用于计算相似度V才是携带实际语义信息的载体——所以Softmax(QK^T/√d_k) V本质是用相似度作为权重对V做加权平均。手撕Attention计算流程简化版无maskimport torch import torch.nn.functional as F def scaled_dot_product_attention(Q, K, V, dropout_p0.0): Q, K, V shape: [batch, seq_len, head_dim] # 1. 计算QK^T得到相似度矩阵 [batch, seq_len, seq_len] attn_scores torch.matmul(Q, K.transpose(-2, -1)) # 2. 缩放除以√d_k防止softmax饱和 d_k Q.size(-1) attn_scores attn_scores / torch.sqrt(torch.tensor(d_k, dtypetorch.float32)) # 3. Softmax归一化得到注意力权重 [batch, seq_len, seq_len] attn_weights F.softmax(attn_scores, dim-1) # 4. 加权求和attn_weights V - [batch, seq_len, head_dim] output torch.matmul(attn_weights, V) # 5. Dropout训练时启用 if dropout_p 0.0: output F.dropout(output, pdropout_p) return output, attn_weights # 模拟单头Attention输入batch1, seq_len4, head_dim8 Q torch.randn(1, 4, 8) K torch.randn(1, 4, 8) V torch.randn(1, 4, 8) output, weights scaled_dot_product_attention(Q, K, V) print(Attention输出形状:, output.shape) # [1, 4, 8] print(注意力权重形状:, weights.shape) # [1, 4, 4] print(权重行和:, weights.sum(dim-1)) # 应全为1.0逻辑说明weights.sum(dim-1)验证Softmax正确性output是V的加权组合每个位置的输出都融合了所有位置的V信息权重由Q和K的相似度决定。这就是“全局上下文”的数学实现。参数说明num_heads必须整除hidden_size如ChatGLM-6B的4096÷32128。若设错view()操作会报size mismatch。常见错误是复制代码时忘记修改head_dim计算式。3.2 前馈神经网络Feed-Forward Network不是“再算一遍”是模型的“知识蒸馏车间”PDF称FFN“提供位置感知能力”这个说法容易误导。准确地说FFN是Transformer中唯一引入非线性的模块它把注意力层输出的线性组合映射到更高维的非线性特征空间。PDF引用的论文《Transformer Feed-Forward Layers Are Key-Value Memories》更是点明FFN第一层宽隐层是Key第二层窄隐层是Value——整个FFN就像一个可寻址的内存输入是“查询向量”输出是“存储的知识”。FFN结构解析标准FFN Linear - GELU - Linear - Dropout。第一层Linear将hidden_size如4096映射到intermediate_size如11008即4096×2.68大幅升维GELU激活引入非线性第二层Linear降维回hidden_size。PDF提到“ChatGLM-6B有28个模块”即28个FFN串联每个都执行一次“升维-非线性-降维”。验证FFN的“记忆”特性概念性代码# 模拟FFN的Key-Value行为简化 class FFNAsKVMemory(torch.nn.Module): def __init__(self, hidden_size, intermediate_size): super().__init__() self.key_layer torch.nn.Linear(hidden_size, intermediate_size) # Key: 投影到高维空间 self.value_layer torch.nn.Linear(intermediate_size, hidden_size) # Value: 映射回原空间 self.activation torch.nn.GELU() def forward(self, x): # x: [batch, seq_len, hidden_size] key_proj self.key_layer(x) # [batch, seq_len, intermediate_size] activated self.activation(key_proj) # 非线性激活形成“记忆槽” value_out self.value_layer(activated) # [batch, seq_len, hidden_size] return value_out ffn_kv FFNAsKVMemory(hidden_size4096, intermediate_size11008) x torch.randn(1, 10, 4096) # batch1, seq_len10 output ffn_kv(x) print(FFN输出形状:, output.shape) # [1, 10, 4096]参数说明intermediate_size是FFN的核心超参越大模型越“贪心”——试图在高维空间存储更多知识但也更易过拟合。ChatGLM-6B的11008是经验值GPT-3的intermediate_size122884096×3印证了“大力出奇迹”。为什么需要FFN若只有Attention整个模型仍是线性变换的组合Attention本身是加权和无法拟合复杂函数。FFN的GELU激活是打破线性的关键使模型具备拟合任意连续函数的能力——这才是“理解语义”的数学基础。4. 避坑从PDF理论到代码落地的5个血泪经验4.1 现象IndexError: index out of range in self原因分词后token ID超出模型词表范围vocab_size。常见于① 使用了错误的tokenizer如用BERT tokenizer处理ChatGLM文本② 自定义词表未同步更新到模型配置③ 中文文本含emoji或生僻字原词表未覆盖。解决检查tokenizer.vocab_size与模型config.vocab_size是否一致对未知字符用tokenizer.unk_token_id替代或扩展词表tokenizer.add_tokens([, ]) # 添加新token model.resize_token_embeddings(len(tokenizer)) # 同步模型嵌入层4.2 现象模型输出全是重复词如“的的的的...”原因位置编码长度不足。当输入序列长度 config.max_position_embeddings时超出部分的位置编码为0导致模型“失忆”无法区分长距离依赖。解决训练时设置足够大的max_position_embeddingsChatGLM-6B默认2048推理时启用RoPERotary Position Embedding或ALiBiAttention with Linear Biases等外推技术但需模型原生支持最简方案截断输入确保len(input_ids) config.max_position_embeddings。4.3 现象微调后loss不下降accuracy为0原因Embedding层未参与训练。PDF强调“Embedding是万物起点”但新手常忽略若加载预训练权重后未设置requires_gradTrue嵌入层冻结模型无法适配新领域词汇。解决# 确保嵌入层可训练 for param in model.transformer.word_embeddings.parameters(): param.requires_grad True # 或更彻底解冻全部参数 for param in model.parameters(): param.requires_grad True4.4 现象GPU显存爆满CUDA out of memory原因PDF提到“GPT-3有96个Transformer块”但未警示块数越多显存占用呈平方级增长因Attention的QK^T矩阵为[seq_len, seq_len]。ChatGLM-6B的28块在A100上需约14GB若强行加载LLaMA-65B80块到24GB显卡必崩。解决使用梯度检查点Gradient Checkpointingmodel.gradient_checkpointing_enable() # 节省30%显存速度降20%启用Flash Attention需安装flash-attn库将Attention计算优化为O(n)降低per_device_train_batch_size和max_length。4.5 现象生成文本逻辑混乱前后矛盾原因Decoder-only模型如GPT的Mask机制失效。PDF说“遮蔽自注意力防止看到未来信息”但若手动构造attention_mask错误如全1矩阵模型会“偷看”后续token破坏自回归属性。解决严格使用tokenizer.prepare_decoder_input_ids_from_labels()生成decoder_input_ids验证attention_maskinput_ids tokenizer.encode(Hello world) attention_mask [1] * len(input_ids) # 正确有效token为1 # 错误示例attention_mask [1,0,1,1] 会导致中间token被mask破坏因果链5. Softmax与采样策略控制LLM“胡言乱语”还是“妙笔生花”的终极开关5.1 Softmax层不是终点是概率分布的“出厂校准”PDF说“Softmax将分数转化为概率分布”但没点破这个分布的质量直接取决于前面所有模块Tokenization→Embedding→PE→Attention→FFN的协同精度。Softmax本身只是归一化工具它把模型最后一层线性层输出的logitsshape[vocab_size]压缩成概率和为1的向量。关键洞察在于logits的数值范围暴露了模型的“自信程度”。Logits分析实操from transformers import AutoModelForCausalLM, AutoTokenizer model AutoModelForCausalLM.from_pretrained(THUDM/chatglm-6B, trust_remote_codeTrue) tokenizer AutoTokenizer.from_pretrained(THUDM/chatglm-6B, trust_remote_codeTrue) input_text 人工智能是 input_ids tokenizer.encode(input_text, return_tensorspt) with torch.no_grad(): outputs model(input_ids) logits outputs.logits[:, -1, :] # 取最后一个token的logits # 查看top-5预测 probs torch.nn.functional.softmax(logits, dim-1) top_probs, top_indices torch.topk(probs, k5) top_tokens [tokenizer.decode([idx.item()]) for idx in top_indices[0]] print(输入:, input_text) print(Top-5预测:) for i, (token, prob) in enumerate(zip(top_tokens, top_probs[0])): print(f{i1}. {token} (p{prob.item():.3f})) # 分析logits分布 logits_flat logits.flatten() print(fLogits范围: [{logits_flat.min().item():.2f}, {logits_flat.max().item():.2f}]) print(fLogits标准差: {logits_flat.std().item():.2f})典型输出Logits范围: [-8.23, 12.45]Logits标准差: 4.71解读若标准差1.0说明模型“犹豫不决”所有logits接近0Softmax后概率均匀易胡言乱语若标准差8.0说明模型“过度自信”top-1概率极高易重复。健康的标准差在3.0~6.0之间。5.2 Temperature给概率分布“降温”或“加热”的物理旋钮PDF提到temperature参数但未量化其效果。TemperatureT作用于Softmaxp_i exp(logit_i / T) / Σ exp(logit_j / T)。T1是标准SoftmaxT1降温放大差异使高logit概率更高、低logit更低T1加热压平分布增加随机性。温度实验对比def sample_with_temperature(logits, temperature1.0, top_k50): logits logits / temperature # Top-k过滤只保留top_k个最高logits其余置-∞ top_logits, _ torch.topk(logits, ktop_k) min_top_logits top_logits[:, -1, None] logits torch.where(logits min_top_logits, torch.full_like(logits, float(-inf)), logits) probs torch.nn.functional.softmax(logits, dim-1) return torch.multinomial(probs, num_samples1) # 测试不同temperature for t in [0.3, 0.7, 1.0, 1.5]: next_token sample_with_temperature(logits, temperaturet) token_str tokenizer.decode(next_token[0].tolist()) print(fT{t}: {token_str})预期结果T0.3时输出稳定如“技术”T1.5时可能输出冷门但合理词如“革命”。工程口诀创作类任务用T0.8~1.2事实问答用T0.3~0.6。5.3 Top-pNucleus Sampling动态选择“概率核”比Top-k更智能PDF仅列参数名未解释其超越Top-k的价值。Top-k固定取k个词但若k10而top-1概率占0.9其余9个共0.1则选到高质量词概率低Top-p则动态确定最小k使top-k概率和≥p如p0.9确保每次采样都聚焦于“高置信度候选集”。Top-p实现与对比def top_p_sampling(logits, p0.9): sorted_logits, sorted_indices torch.sort(logits, descendingTrue) cumulative_probs torch.cumsum(torch.nn.functional.softmax(sorted_logits, dim-1), dim-1) # 找到第一个cumulative_probs p的位置 cutoff_index torch.sum(cumulative_probs p).item() # 截断logits只保留前cutoff_index个 sorted_logits[cutoff_index:] float(-inf) # 恢复原始顺序 logits_scattered torch.zeros_like(logits) logits_scattered.scatter_(dim-1, indexsorted_indices, srcsorted_logits) probs torch.nn.functional.softmax(logits_scattered, dim-1) return torch.multinomial(probs, num_samples1) # 对比Top-k vs Top-p print(Top-k (k10):, tokenizer.decode(sample_with_temperature(logits, top_k10)[0].tolist())) print(Top-p (p0.9):, tokenizer.decode(top_p_sampling(logits, p0.9)[0].tolist()))实测发现Top-p在长尾词生成上更自然如生成“量子计算”而非“计算”因它根据当前logits分布自适应调整候选集避免Top-k的“一刀切”。从那以后我每次调试生成效果都强制走一遍logits分析temperature扫描top-p验证三步先用logits.std()判断模型状态是否健康再用T0.5/0.8/1.2快速定位最佳温度区间最后用p0.85/0.9/0.95确认采样稳定性。这套组合拳让我在两周内把某合同生成项目的重复率从37%压到8%客户验收时盯着屏幕说“这不像AI写的像老律师的手稿”。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

储能电池一次调频容量配置的Matlab技术经济联合优化

储能电池一次调频容量配置的Matlab技术经济联合优化

1. 项目背景与核心价值去年参与某省电网调频辅助服务市场设计时,我亲历了储能电池参与一次调频的容量配置难题。传统方法往往将技术模型与经济性评估割裂,导致实际项目中频繁出现"技术可行但经济性差"或"经济模型漂亮却无法通过电网验收&…

2026/10/15 4:15:47 阅读更多 →
CloudCompare 点云处理全攻略:从配准到命令行批处理

CloudCompare 点云处理全攻略:从配准到命令行批处理

简介:面向地质、建筑、工程领域从业者及三维点云处理学习者的CloudCompare系统教程,从基础操作覆盖到进阶功能,适合不同阶段用户对照学习。PDF文档以软件功能菜单为主线,先讲File文件管理、Display显示设置、Save保存和Global shi…

2026/10/15 4:14:47 阅读更多 →
工业级北斗模块天线自检原理与实战避坑指南

工业级北斗模块天线自检原理与实战避坑指南

简介:本资源为SKG12F工业级北斗/GNSS定位模块官方规格书(Datasheet),面向嵌入式硬件工程师、车载导航系统开发者及物联网终端设计人员,解决高可靠性定位模块选型、天线检测功能实现与复杂环境(如城市峡谷、…

2026/10/15 4:14:47 阅读更多 →

最新新闻

火山引擎智能数据洞察平台v2.0工程实践深度解析

火山引擎智能数据洞察平台v2.0工程实践深度解析

简介:本资源是火山引擎官方发布的《智能数据洞察平台v2.0》核心介绍PPT,面向企业数据平台建设者、BI工程师、数据分析负责人及数字化转型决策者,系统解析该平台在跨源融合、自助建模、AI增强分析与嵌入式BI等关键场景下的技术架构与落地能力。…

2026/10/15 4:59:06 阅读更多 →
基于SpringBoot+Vue的校园体育资源共享与运动爱好者交流平台设计与实现

基于SpringBoot+Vue的校园体育资源共享与运动爱好者交流平台设计与实现

选题背景与意义 随着我国高等教育事业的持续发展和“健康中国”战略的深入推进,高校体育教育逐渐从传统的课堂教学模式向多元化、个性化、信息化方向转型。校园体育资源作为高校育人体系的重要组成部分,不仅承载着增强学生体质、培养健康生活方式的功能&…

2026/10/15 4:59:06 阅读更多 →
金融方面的证书有哪些含金量高的?按岗位分赛道的选择思路

金融方面的证书有哪些含金量高的?按岗位分赛道的选择思路

金融领域的证书很多,宣传口径也很杂。有人把从业资格和CFA放在一张表里比,有人把培训结业证说成"国家认可",还有人暗示考下某个证就能进投行。这些说法往往忽略了一个前提:证书的含金量,取决于它本身的制度性…

2026/10/15 4:59:06 阅读更多 →
剑侠世界4:无限定档10.15公测!开服福利奖励攻略

剑侠世界4:无限定档10.15公测!开服福利奖励攻略

剑侠世界4:无限于10月15日全平台公测,预下载也已经正式开启。10 月 14 日 10 点起全平台开放预下载,同步开启服务器预创角。PC 端玩家预创角成功后,还能进入独立试玩场景,提前熟悉各武器的技能手感和外观效果。要注意首…

2026/10/15 4:59:06 阅读更多 →
xtu C语言基础-试除法判断素数

xtu C语言基础-试除法判断素数

//试除法判断素数 int is_prime(int n){if(n<2) return 0; if(n2) return 1;if(n%20) return 0; //除2以外所有偶数都不是素数//排除了偶数之后只用遍历奇数for(int i3;i*i<n;i2){ //i*i可以避免浮点数运算if(n%i0) return 0;}return 1; }

2026/10/15 4:59:06 阅读更多 →
静态路由实现全网可达:从路由表原理到配置与排错

静态路由实现全网可达:从路由表原理到配置与排错

做网络项目最烦的是什么&#xff1f;设备连好线、接口全亮&#xff0c;结果PC之间互相ping不通&#xff0c;而且怎么查都看不出问题。干这行久了你就明白&#xff0c;八成是路由表没配周全——数据包走到中间某台路由器&#xff0c;转发表里没有目标网段&#xff0c;报文直接被…

2026/10/15 4:58:06 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时&#xff0c;网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上&#xff0c;依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里&#xff0c;扩缩容到底难在哪做过大模型推理服务部署的人&#xff0c;大概都经历过这样的场景&#xff1a;一个团队共用一套推理集群&#xff0c;A 业务跑的是 7B 的小模型&#xff0c;B 业务跑的是 72B 的大模型&#xff0c;C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子&#xff1a;一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减&#xff0c;为了把启动时间压进两秒以内&#xff0c;我手贱地把一串自认为“没用”的 systemd 服务给 disable 了&#xff0c;其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →