Skip to content

Commit c92e37b

Browse files
🔧 Update Python documentation and enhance standard library coverage
- Expanded Python documentation with detailed explanations of enum module - Added comprehensive examples and use cases for enum types - Removed deprecated and redundant sections from Python documentation - Improved code examples and formatting in Python advanced topics - Enhanced documentation structure for better readability and navigation
1 parent c8d64f7 commit c92e37b

File tree

17 files changed

+3316
-3059
lines changed

17 files changed

+3316
-3059
lines changed

blog/2024-12-30.md

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -153,28 +153,20 @@ description: 2024年年末总结与回顾
153153

154154
最近新买了一台台式机,主要用于编程(高速大内存)、建模跑模型(显存优先)和数据分析(高速硬盘)。
155155

156-
对于大模型来说,显存优先。32B 的大模型本地需要 20G、常规的文生图模型本地需要 24G。消费级只有 3090、4090、5090 可以选。
156+
对于大模型来说,显存优先。32B 的大模型本地需要 20G、常规的文生图模型本地需要 24G。
157157

158-
目前 5090 全网断货,4090 价格在 16000 左右。等待价格回落,先用 3060 过渡。
159-
160-
一些可以综合降价2K的选择:
161-
162-
- 电源我选择的是 1200W 白金可以适配 5090 的高功耗。你可以选择利民1000W金牌系列。
163-
- 硬盘我选择的是 1T 的 PCIE5.0 固态硬盘,为了本地文件快速传输,你可以选择 PCIE4.0 的固态硬盘。
164-
- 内存我选择的是 32G * 2 的内存,你可以选择单条 32G 的内存。
158+
消费级显卡性价比更高,3090 Ti 支持 Nvlink 很适合后期组双卡,或升级5090。
165159

166160
| 配件 | 描述 | 价格 (元) |
167161
| ---------- | ----------------------------------------------------------- | --------- |
162+
| 显卡 | 微星 超龙 RTX3090Ti 24G | 8099 |
168163
| CPU | AMD 锐龙 R9 7950X 16 核 32 线程 | 3695 |
169-
| 显卡 | 华硕 TUF GAMING RTX3060 12G | 1679 |
170-
| 主板 | 华硕 TUF GAMING B650M PLUS 蓝牙 WIFI DDR5 | 1170 |
171164
| 硬盘 | 英睿达固态硬盘 1T M.2 PCIE5.0 | 1767 |
172165
| 内存 | 光威内存 龙武 32G\*2 64G 6400 C32 马甲条 | 1330 |
166+
| 主板 | 华硕 TUF GAMING B650M PLUS 蓝牙 WIFI DDR5 | 1170 |
173167
| 电源 | 航嘉 MVP1200 额定 1200W 白金全模组 黑色 | 1258 |
174168
| 机箱及风扇 | 航嘉 GX750A 掠夺者 黑色 ATX 360 + 链力无光风扇\*6 | 300 |
175169
| 水冷散热 | 钛钽 SJ-A080 360WH | 295 |
176170
| 屏幕 | 乐视显示器 32 英寸 1K 75hz | 699 |
177-
| 键盘 | Lofree 洛斐小浪蓝牙机械键盘体验版(旅行版) | 699 |
178-
| 鼠标 | Razer 雷蛇炼狱蝰蛇 V2X 极速版双模无线电池笔记本蓝牙电竞鼠标 | 249 |
179-
| **主机** | **不含外设(键盘/鼠标/屏幕)总价** | **11494** |
180-
| **总计** | **全部配件总价** | **13141** |
171+
| 键盘 | Lofree 洛斐小浪蓝牙机械键盘(旅行版) | 599 |
172+
| 鼠标 | Razer 雷蛇炼狱蝰蛇 V2X 极速版双模无线电池笔记本蓝牙电竞鼠标 | 249 |

docs/docs/机器学习/Transformer/index.md

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,56 @@ title: 🚧Transformer
55

66
学习Transformer的原理,使用PyTorch实现一个简单的Transformer模型,对模型进行训练和推理。通过分布式训练,提升模型训练效率。
77

8-
通过这个单元的学习,你可以获得一个专属于自己的大模型,并可以用于自己的业务场景。
8+
通过这个单元的学习,你可以获得一个专属于自己的大模型,并可以用于自己的业务场景。同时可以回答下面的问题:
9+
10+
<details>
11+
<summary>
12+
不同的大模型可以用同一套提示词吗?
13+
</summary>
14+
使用了相同的语料、token分词算法。那么大模型的tokenizer是相似的。通常来说,同个公司的大模型,语料与算法是相似的。因此相似的提示词可以生效。
15+
16+
如果语料差距较大、token分词算法不同,那么提示词可能无法生效。
17+
18+
常见的分词算法例如:Byte-Pair Encoding (BPE)
19+
20+
原理:通过合并最频繁的字符对来构建词汇表,适合处理罕见词和新词。
21+
</details>
22+
23+
24+
<details>
25+
<summary>
26+
大模型最大上下文长度无限制增大吗?
27+
</summary>
28+
29+
增大模型的最大长度会带来以下几个问题:
30+
- Transformer模型的设计中,输入序列的长度通常在模型的构建时就被固定。这是因为模型的自注意力机制需要为每个输入token计算与其他所有token的关系,计算复杂度与输入长度的平方成正比。因此,固定的输入长度可以简化计算和内存管理。
31+
32+
- Transformer使用位置编码(Positional Encoding)来 为输入序列中的每个token提供位置信息。位置编码的维度通常与模型的隐藏层维度相同,而位置编码的数量通常是根据预设的最大输入长度来定义的。如果输入长度超过了这个预设值,模型将无法正确处理超出部分的token。
33+
34+
- 在训练过程中,模型通常会使用固定长度的输入序列。如果训练数据中的序列长度超过了模型的最大输入长度,通常会进行截断或填充(padding),这可能导致信息丢失或计算效率低下。
35+
</details>
36+
37+
38+
39+
<details>
40+
<summary>
41+
Temperature 是如何影响模型输出的?
42+
</summary>
43+
44+
Temperature 是一个控制模型输出随机性的超参数。它会影响模型在选择下一个token时的概率分布。公式为:
45+
46+
$$
47+
Attention(Q, K, V) = softmax(QK^T / \sqrt{d_k}) * V
48+
$$
49+
- 当 Temperature 较高时,模型会倾向于选择概率较高的token,输出结果更确定。适合生成高质量、一致性强的文本。例如数学。
50+
- 当 Temperature 较低时,模型会倾向于选择概率较低的token,输出结果更随机。适合生成多样性、创造性强的文本。
51+
52+
理论上,Temperature 的取值范围不限,但是实际使用中,通常取值在0-2之间,过高的 Temperature 会导致模型输出不准确。
53+
54+
如果你想生成一个童话的故事,且你可以设置了一个的 Temperature 为0,那么模型会倾向于生成传统的王子和公主的故事。因为语料中,王子和公主的故事是最多的。如果你想生成一个多样化的故事,你可以设置一个较高的 Temperature,例如1.5。但是这可能会导致故事的逻辑性不强,或者出现不符合逻辑的情节。
55+
56+
</details>
57+
58+
959

1060
<DocCardList />

docs/docs/机器学习/Transformer/手写多模态大模型.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,11 @@ sidebar_position: 4
33
title: 🚧手写多模态大模型
44
---
55

6+
开源仓库地址:
67

8+
https://github.com/jingyaogong/minimind-v
9+
10+
https://github.com/jingyaogong/minimind
11+
12+
13+
李沐的[动手学深度学习](https://github.com/d2l-ai/d2l-zh)

docs/docs/逆向测试/接口测试.md

Lines changed: 2 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ title: 接口测试
55

66
## 接口测试
77

8-
本章列举了一些直接发起请求的模块,这些模块在旧时代 HTTP1.0 时期,非 Js 渲染时代是我们获取网页数据的利器。
8+
本章列举了一些直接发起请求的第三方模块,这些模块在 HTTP1.0 时期,非 Js 渲染时代是我们获取网页数据的利器。
99

1010
现在是[HTTP2.0](https://http2-explained.haxx.se/)(简称 h2)以及以 VUE 为代表的 Js 渲染页面时代。因此这些模块现在主要用于获取直接的数据,譬如:图片、视频、纯静态的 HTML 网页或 XHR(XMLHttpRequest)类型的请求。
1111

@@ -19,92 +19,12 @@ title: 接口测试
1919
(6) DELETE:请求删除 URL 位置存储的资源
2020
(特殊)options :向服务器获取一些服务器和客户端能够打交道的参数,但与获取资源并不直接相关
2121

22-
urllib 模块:仅支持 HTTP1.0 仅同步 ,但是解码和解析功能是真的很好用
23-
2422
request 模块:仅支持 HTTP1.0 仅同步 是基于 urllib3 的再次封装,因此语法更简单
2523

2624
aiohttp 模块:支持 HTTP2.0 仅异步
2725

2826
httpx 模块:支持 HTTP1.1/2.0 同步异步,双卡双待,是直接发起请求的模块中最全能的模块。
2927

30-
### urllib
31-
32-
urllib 是一个收集了多个涉及 URL 的模块的自带包:可以打开和读取 URL、 抛出异常、解析 URL、解析 robots.txt 文件是最底层的模块。
33-
34-
[urllib 模块代码文档](https://docs.python.org/zh-cn/3/library/urllib.html?highlight=urllib#module-urllib)
35-
36-
#### urllib 发送请求
37-
38-
```python showLineNumbers
39-
import urllib.request
40-
41-
url = 'https://www.python.org'
42-
# 方式一
43-
response = urllib.request.urlopen(url)
44-
print(type(response)) # <class 'http.client.HTTPResponse'>
45-
# 方式二
46-
request = urllib.request.Request(url)
47-
res = urllib.request.urlopen(url)
48-
print(type(res)) # <class 'http.client.HTTPResponse'>
49-
print(response.read()) # 获取响应体 二进制字符串
50-
print(response.getheaders())
51-
## 结果为
52-
[('Connection', 'close'), ('Content-Length', '50064'), ('Server', 'nginx'), ('Content-Type', 'text/html; charset=utf-8'), ('X-Frame-Options', 'DENY'), ('Via', '1.1 vegur, 1.1 varnish, 1.1 varnish'), ('Accept-Ranges', 'bytes'), ('Date', 'Tue, 17 Jan 2023 14:37:33 GMT'), ('Age', '1938'), ('X-Served-By', 'cache-iad-kiad7000025-IAD, cache-nrt-rjtf7700057-NRT'), ('X-Cache', 'HIT, HIT'), ('X-Cache-Hits', '263, 1190'), ('X-Timer', 'S1673966254.566369,VS0,VE0'), ('Vary', 'Cookie'), ('Strict-Transport-Security', 'max-age=63072000; includeSubDomains')]
53-
```
54-
55-
#### urllib 异常处理
56-
57-
URLError 是 OSError 的一个子类,所有请求问题都会被捕获。
58-
59-
HTTPError 是 URLError 的一个子类,服务器上 HTTP 的响应会返回一个状态码,根据这个 HTTP 状态码来决定是否捕获,比如常见的 404 错误等。
60-
61-
```python showLineNumbers
62-
from urllib import request
63-
from urllib import error
64-
65-
if __name__ == "__main__":
66-
url = "http://www.iloveyou.com/"#一个不存在的连接
67-
req = request.Request(url)
68-
try:
69-
response = request.urlopen(req)
70-
print(response.read())
71-
except error.URLError as e:
72-
print(e) # <urlopen error [Errno 11002] getaddrinfo failed>
73-
```
74-
75-
#### urllib 解析 URL
76-
77-
你肯定经历过复制网址出现乱码,这是因为网址必须以通用码的形式传送,而且还要避免几个特殊字符,因此网址要经编码,汉字经过编码后自然就是不可辨认的乱码了。
78-
79-
那么浏览器的地址栏中,网址为什么看起来是中文呢?这大概是浏览器的“人性化”处理,将编码好的中文网址还原出来“暂时”显示在地址栏中。
80-
81-
知道原理就能清楚的解码啦,你可以通过 encode 和 decode 方法进行操作解码和转码,只不过要考虑汉字中有%等特殊字符和/x 与%互转的情况,所以,直接用 quote 函数吧,别重复造轮子。
82-
83-
```python showLineNumbers
84-
from urllib.parse import unquote
85-
from urllib.parse import quote
86-
87-
url = 'https://www.baidu.com/s?ie=UTF-8&wd=%E7%A7%91%E6%8A%80&%E6%8A%80%E6%9C%AF'
88-
print(unquote(url))
89-
# 结果为https://www.baidu.com/s?ie=UTF-8&wd=科技&技术
90-
91-
92-
print( 'https://www.baidu.com/s?ie=UTF-8&wd='+quote('科技&技术'))
93-
# 结果为'https://www.baidu.com/s?ie=UTF-8&wd=%E7%A7%91%E6%8A%80&%E6%8A%80%E6%9C%AF'
94-
```
95-
96-
#### urllib 解析 robots.txt 文件
97-
98-
```python showLineNumbers
99-
import urllib.robotparser
100-
rp = urllib.robotparser.RobotFileParser()
101-
rp.set_url("http://www.musi-cal.com/robots.txt")
102-
rp.read()
103-
104-
print(rp.can_fetch("*", "http://www.musi-cal.com/")) #判断网页是否可以抓取,'*'表示适用于所有爬虫
105-
# True
106-
```
107-
10828
### requests
10929

11030
requests 是基于 urllib3 开发的一个优雅而简单的 PythonHTTP 库,为人类构建。
@@ -173,7 +93,7 @@ HTTPX 是 Python 3 的全功能 HTTP 客户端,它提供同步和异步 API,
17393

17494
[httpx 代码文档](https://www.python-httpx.org/)
17595

176-
### httpxH2 检测
96+
#### httpxH2 检测
17797

17898
```python showLineNumbers
17999
import httpx

0 commit comments

Comments
 (0)