阅读视图

发现新文章,点击刷新页面。
🔲 ☆

轻量级网络代理转发神器 socat 使用详解

socat(SOcket CAT)是一个基于命令行的实用程序,其核心原理是在任意两个独立的数据通道之间建立双向传输的桥梁。它本身不解读或处理应用层协议(如HTTP),只是忠实地在指定的源和目的地之间转发原始字节流。这种"数据搬运工"的特性,使其成为构建轻量级网络代理的理想工具。有点类似于netcat (即nc命令),nc是单纯面向网络的,而socat连接的更多。

socat安装

# CentOS/RHEL
yum install socat
# Debian/Ubuntu
sudo apt-get install socat
# macOS (Homebrew)
brew install socat

socat进阶配置

在实际使用时,为了让代理更稳定、安全,你还可以关注以下选项和要点:

  • 基础命令格式socat [options] <源地址> <目标地址>

  • 常用选项

    • -u 或 -U:设定数据流为单向(从源到目标或反之)。

    • range=<ip-range>:限制允许连接代理的客户端IP范围,例如range=192.168.1.0/24

    • su=<user>:让socat进程以指定低权限用户(如nobody)运行,增强安全性。

  • 启动与保持

    • 默认命令会在前台运行,按Ctrl+C终止。

    • 如需在后台运行,可以在命令末尾添加 & 符号。

    • 对于需要长期运行的代理,建议配合 systemd 或 supervisor 等进程管理工具使用。

socat使用场景

下面的表格总结了socat作为代理的几种常见用途、对应命令和典型场景:

代理模式核心命令示例关键参数解析典型应用场景
TCP端口转发socat TCP4-LISTEN:8080,fork,reuseaddr TCP4:192.168.1.10:80TCP4-LISTEN:监听端口;fork:允许并发连接;reuseaddr:立即重用端口。将本地8080端口流量透明转发至内网服务器192.168.1.1080端口,实现服务暴露。
跨协议中继socat TCP-LISTEN:3307,reuseaddr,fork UNIX-CONNECT:/var/lib/mysql/mysql.sockUNIX-CONNECT:连接至Unix域套接字。让仅支持TCP连接的远程客户端(如Web服务器)通过本地3307端口访问MySQL的Unix Socket。
流量监控/调试socat -v TCP4-LISTEN:1234,fork TCP:www.example.com:80-v:将双向传输的原始数据打印到终端。拦截并查看经过代理的HTTP等明文协议流量,用于调试。
创建SSL/TLS加密隧道socat OPENSSL-LISTEN:8443,cert=server.pem,verify=0 TCP:localhost:80OPENSSL-LISTEN:开启SSL监听;cert:指定服务器证书和密钥。在不支持SSL的后端服务(如HTTP服务)前增加一个SSL加密层,提升通信安全。

使用参考:

使用systemd、supervisor启动socat

使用 systemd 或 supervisor 来管理 socat 进程,能确保其稳定运行、开机自启和方便管理。下面分别是两种方式的配置示例。

方案一:使用 Systemd 托管

核心思路:将 socat 包装成一个系统服务。

1.创建服务文件
以用 socat 将本地 8080 端口转发到 192.168.1.100:80 为例,创建文件:

vim /etc/systemd/system/socat-proxy.service

2.写入配置
将以下内容写入上述文件,注意根据实际情况修改 ExecStart 命令和 User 等参数:

[Unit]
Description=Socat TCP Proxy (8080 -> 192.168.1.100:80)
After=multi-user.target
Requires=network.target

[Service]
Type=simple
# 以低权限用户运行,提升安全性(可选)
User=nobody
# 关键:此处替换为你的socat转发命令
ExecStart=/usr/bin/socat TCP4-LISTEN:8080,fork,reuseaddr TCP4:192.168.1.100:80
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
RestartSec=5
MemoryHigh=1G
MemoryMax=8G
LimitNOFILE=65536
LimitMEMLOCK=infinity
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

3.启用并启动服务

# 重载systemd配置
sudo systemctl daemon-reload
# 设置开机自启
sudo systemctl enable socat-proxy
# 立即启动服务
sudo systemctl start socat-proxy
# 查看服务状态和日志
sudo systemctl status socat-proxy
journalctl -u socat-proxy -f

方案二:使用 Supervisor 托管

核心思路:将 socat 作为由 supervisor 监控的常驻进程。

1.安装 Supervisor(以Ubuntu/Debian为例)

sudo apt update && sudo apt install supervisor

2.创建进程配置文件
以同样的转发任务为例,创建文件:

vim /etc/supervisor/conf.d/socat-proxy.conf

3.写入配置

[program:socat-proxy]
command=/usr/bin/socat TCP4-LISTEN:8080,fork,reuseaddr TCP4:192.168.1.100:80
autostart=true
autorestart=true
startretries=3
user=nobody
# 可选:指定工作目录
directory=/tmp
# 可选:重定向日志,方便排查
stdout_logfile=/var/log/supervisor/socat-proxy.log
stderr_logfile=/var/log/supervisor/socat-proxy-err.log
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=3

4.启用并启动进程

# 重载supervisor配置
sudo supervisorctl reread
sudo supervisorctl update
# 启动指定进程
sudo supervisorctl start socat-proxy
# 查看进程状态
sudo supervisorctl status socat-proxy

重要提示与建议

  • 命令测试:在写入配置文件前,务必先在终端直接运行 socat 命令,确保其按预期工作。

  • 路径确认:使用 which socat 确认 socat 的安装路径是否为 /usr/bin/socat,如果不是请在配置中修改。

  • 选择依据

    • Systemd 通常是Linux系统首选,与系统集成度高,管理命令统一。

    • Supervisor 更适合管理用户级、非系统服务,或者在一个系统上集中管理多个业务进程的场景,其Web界面有时更方便。

  • 安全考虑:示例中使用了 User=nobody 来降低权限。如果你的转发涉及特权端口(如80、443),可能需要调整权限(如 setcap 或 authbind),但更推荐的做法是监听非特权端口(如8080),再用反向代理(如Nginx)转发。

两种方式都能很好地完成任务。通常,如果你的服务是系统基础服务的一部分,优先选用 systemd;如果是一个独立的用户应用进程,Supervisor 的进程管理界面可能更友好。

总结

socat是一个功能强大且灵活的"瑞士军刀"。它最适合用于快速搭建临时性代理、调试网络问题、跨协议中继或为简单服务增加SSL层。它的优点在于命令简单、无需复杂配置、资源占用少

对于需要高性能、负载均衡、用户认证、复杂日志审计长期稳定运行的生产级代理场景,socat可能不是最佳选择,而应选用专门的代理软件如Nginx、HAProxy等。

参考:Systemd 入门到精通:编写一个生产级的 Service 配置文件

🔲 ☆

高效沟通(四):沟通技术

上篇文章中我分享了一些常用的沟通方式:尊重、倾听和情绪控制,并给出了几个我认为很不错的沟通技巧,比如:引起对方的兴趣;过滤信息,简明扼要地表达;用数据和实例说话。这篇文章中,我来分享几个关键的沟通技术,相信掌握了这几大沟通法宝,你的沟通水平会大幅提升。

逻辑

你的逻辑能力一定要强。因为中国人从小就不学逻辑学,所以讲话不注重逻辑,而我们理科生尤其是学过数学的程序员是懂逻辑的,所以,对于我们程序员来说,我们是可以用缜密逻辑疯狂地碾压别人的。

逻辑是一门科学,也是一门数学。谁是谁的充分条件、必要条件或充要条件,以及有没有关联关系,有没有因果关系等,这些东西你要做到心中有数,当对方的表达中出现逻辑错误时,你可以随时指出来。比如,这两个事儿没有因果关系,我们不要把它们放在一起谈。

有一次,我就跟一家公司的产品团队 PK 了一下。这家公司的产品有一个视频下载功能,但他们统计数据发现,有大约 40% 的用户下载到一半就取消下载操作了。于是他们就想提高用户的下载体验,解决办法是模仿微信的绿色进度条的做法:让进度条的 90% 嗖地过去,然后最后的 10% 则对应实际剩下的下载进度。

我们通过逻辑分析,不难发现这样做是不能赢得用户的。他们的逻辑是:“用户看到已经下载 90% 了,然后会想那 10% 很快就能下载好,所以会愿意多等一会儿。而不是下载 10% 就让用户等了半天,那他就不想等了。”这里的前置条件是用进度条欺骗用户,后置条件是用户愿意等待下载。

但是不是进度条这样设计了以后,用户就真的愿意等到下载完成呢?不是的。不需要试验,我们脑补一下,当我们的微信打不开网页,或者打开速度超过我们的心理忍受限度时,无论那个进度条是多少,我们都不会等的。有这么一个逻辑在这里卡着。

基于这种逻辑,我跟他们说,这种进度条设计会导致更低的下载率。因为视频通常比较大,下载的总时间是很长的,绝大多数用户对这个速度是没有概念的。打开网页的时间是很短的,90% 的网页在 3、4 秒内就打开了,只有少数偶尔需要 5 秒到 10 秒才能打开(因为移动网络的问题)。

这时,我可以通过这种“就快完”的手段把用户多留下来一会儿。但是,视频下载无论怎样优化,至少需要半分钟,才能下载下来。此时,如果进度条不能反映真实进度的话,用户对总的打开时间是没有合理预期的,90% 的进度提前到了,剩下的 10% 花那么久,很容易让人认为是下载卡死了,从而放弃,乃至在多次重试无果后对应用和平台都失去兴趣。

所以,这样的进度条设计只是用户愿意等一小下(15 秒以内)的充分条件(还不一定是必要条件),并不是用户愿意等待直到视频下载完成的充分条件或必要条件。

在这样的逻辑面前,产品经理立马取消了这个功能的排期,说还需要想一想。你看,你可以用你的一些逻辑推理去分析问题的前因后果和条件,然后用这个条件来说服他。

在逻辑层面说服对方,是一种非常高级的手段,就像懂微积分的人来解数学题一样,那些不懂微积分的只有被碾压的份儿了。

信息

信息要全面、准确。这里重点提一下 X/Y 问题。X/Y 问题是一件非常讨厌的事情。有时候我们拿着 Y 问题去找别人,问到一半才知道,我们原来要问的是 X 问题。

Stack Overflow 上有个问题,问的是“怎么截取一个字符串的最后三位?”大家给了一堆答案。突然有个人问:“你为什么要截取字符串的后三位?”他说:“我要找文件的扩展名”。实际上,文件的扩展名不一定是 3 个字符,而且有专门的函数干这个事儿,不需要自己写。这里,取文件的扩展名,这叫 X,取文件名的最后 3 个字符,这叫 Y。他想知道 X,但不知道该怎么说,于是就说成了 Y,导致别人都去解决一个不存在的问题。这叫 X/Y Problem。

我可以告诉你,这个世界上到处都是 X/Y 问题。有些公司找我说,我们要做分布式架构,我们要做大中台,我们要做线下线上融合……这些问题都是 Y 问题。我都要反问,你为什么要做分布式架构?为了大规模营销,为了稳定性,还是为了加快开发速度?做大中台,你是为了什么? 是为了打通各个业务线,为了快速开发,还是为了技术输出?等等。要解的真实问题才是 X 问题,手段都是 Y 问题。只有你真正了解了 X 问题,你才能真正明白整个事。

当你了解了 X 问题后,你就要到源头,来质疑或是改良他的 Y 问题,甚至提出 Z 方案,而对方会陷入被动,被你牵着鼻子转。

维度

我们想一下,人与人不同都是细节上的不同,比如:身高、体重、手机号等,人与人的相同点都是在宏观上相同,比如:国籍,性别……这告诉我们,如果你要找不同就要到细节上去,如果你要找共同,就要到大局上去。

所以,在和人争论时,如果要反驳,那一定是低维度反驳,越细节越好。而在说服对方时,则要在高维度说服对方,越宏观越好,比如从公司的大目标出发。高维度讲究的是求同存异。你跟别人相同的东西一定是高维度的,这就是大同,而你跟别人不同的一定是非常细节的东西。大同的东西,更容易让人产生共鸣,从而容易达成默契和共识。

因此,能够站在更高的维度来沟通是我们需要努力的目标。我们经常会听到类似的话:“哎呀,大家都没有恶意。我们虽然争论成这样,但是大家都是为公司好,只不过我们的路径不对。”或者“我们的目标是一样的,但是我们的方式不一样。”能感觉到吧?气氛一下子就缓和了好多。

站在更高的维度上讨论问题,可以让你有大局观,对方就会显得很小气,导致对方也会不好意思,于是就会出现“六尺巷”的故事中所描述的那种场景。

共同

这里讲的是共情,共享,共利,共识以及换位思考。如果你能站在对方的角度思考问题,那么你所想的问题以及所想沟通的内容,一定会跟只想自己有很大不同。同时,你会神奇地发现,换位思考能帮助你更为全面地理解并解决问题。

寻找“共同”的过程,其实也可以理解成为化“敌”为“友”的过程。我们不妨想象一下,沟通双方剑拔弩张,随时一触即发的情况,和沟通双方有共同的目标一起思考和解决问题的状态,哪种更能获得更好的结果。而共同该怎样找,跟我们在维度中提及的很相似,就是从高维度,寻找共同之处。

首先是共情,跟对方相互分享各自的情感,这是一种拉近距离最有效的手段,然后是相互共享自己的观点,在观点中寻求双方共同的利益点,然后不断地循环,一点一点地达成共识。

三本书

此外,我还想强调一点,无论干什么,你一定要有一个非常犀利的观点,也就是金句。如何得到这些金句呢?一定要多看书。你到那些公众号或者知乎里面看一些抖机灵的内容是没有用的。抖机灵的金句没有用。一定要是有思想深度的金句,才有力量。推荐你看三本书《清醒思考的艺术》、《简单逻辑学》和《重来》。

我是先被《重来》洗脑了,这本书帮我开拓了眼界,打破了我既有的思维模式,让我反思过去习以为常的每一件事。同时书中给出了实用、可操作的建议,让我头一次从心底感受到,原来世界还可以如此不同。

然后,我看了《清醒思考的艺术》,这本书作者以显微镜般的观察发现人们常犯的 52 个思维错误,并一一列出。帮人们认识到错误的思维是如何发生,从而避免掉入思维陷阱中。看这本书的过程中,我能明显感觉到自己的思维方式在被重新构造。

随后是《简单逻辑学》。逻辑学是很枯燥的,但这本书的作者以其简练而又充满趣味的笔触,将逻辑学活化为一种艺术,从它的基本原理,到论证,到非逻辑思维的根源,再到 28 种就发生在人们身边的非逻辑思维形式,带领我们进入这个精彩无比的逻辑世界,体会妙趣横生的思维交锋,跨过无处不在的逻辑陷阱,让人沉醉其中,欲罢不能。

这三本书对我影响很大,也建议你好好读读,能改善你的思维,炼就你的火眼金睛。你会发现自己跟和别人不在一个频道上,你能看到事物更多的侧面,在阐述观点时,会比别人更加深刻、犀利和有见地。一些金句也会在你跟人互动交流时,随机地冒出来。你自己都能明显感觉到自己的气场要比其他人足。

小结

总结一下今天的内容。我们讲了沟通的四大关键技术:逻辑、信息、维度和共同

有逻辑的表达,更容易说服对方。信息全面准确,更有利于让沟通的双方清楚定位问题,从而更高效地解决问题。

维度是个很有趣的事儿,有的时候要站在高维度去碾压对方;有的时候要站在低维度去碾压对方。如何把握这个度很重要。如果站在客户的角度,最好用高维度。但如果站在技术细节的角度,这是低维度。高维度容易拉拢对方,而在低维度更容易说服对方。只不过低维度容易爆发冲突,要恰当地控制好度。

最后一点是共同,其实寻找共同的过程就是化“敌”为“友”的过程,帮助大家在共赢的大思路和环境下,共同思考问题的解,从而实现高效沟通。此外,我强调了金句的重要性,以及如何获得这些金句。答案是没有捷径可走,唯有多读书,多思考,才能慢慢获得。

来源:《左耳听风专栏:高效沟通》

🔲 ☆

Mac Chrome浏览器开启同步功能本地书签被覆盖恢复

Chrome开启同步功能时忘了先备份本地书签,导致保存的书签全部被覆盖,赶紧呼叫AI,Mark一下。


在Mac上,若Chrome同步功能覆盖了本地书签,最快恢复方法是利用Bookmarks.bak备份文件。切勿在此期间关闭Chrome。在访达中进入 ~/Library/Application Support/Google/Chrome/Default,将 Bookmarks.bak 重命名为 Bookmarks 覆盖原文件。 

具体操作步骤:
  1. 保持Chrome打开状态: 不要关闭浏览器,以免备份文件被更新。

  2. 查找书签文件:

  • 在Mac中打开“访达”(Finder)。

  • 按下 Cmd + Shift + G,输入:~/Library/Application Support/Google/Chrome/Default

  • 找到 Bookmarks(当前覆盖后的书签)和 Bookmarks.bak(原来的书签备份)两个文件。

  • 恢复备份:

    • 如果 Bookmarks.bak 文件较小且没有更新,说明它还存有旧数据。

    • 退出Chrome。

    • 删除 Bookmarks 文件。

    • 将 Bookmarks.bak 重命名为 Bookmarks

  • 重新打开Chrome: 此时书签应已恢复。

  • 开启同步注意: 如果书签再次被同步覆盖,建议在书签管理器中利用“时钟”图标恢复30分钟前的版本。


  • 参考:

    🔲 ☆

    Linux上df和du统计磁盘占用大小差异分析

    在 Linux 系统上,df 和 du 命令统计结果不一致是经常遇到的情况,其背后的原理涉及到文件系统如何管理磁盘空间和文件这两个不同的视角。

    简单来说,核心差异在于:

    • df 报告的是文件系统级别的磁盘块使用情况,它查看的是磁盘块的分配情况。

    • du 报告的是文件级别的磁盘块使用情况,它通过累加每个文件的大小来计算。


    1. 命令定义与工作原理

    df (Disk Free)

    • 工作原理df 命令直接读取文件系统的超级块(Superblock) 中的信息。超级块中存储了整个文件系统的元数据,包括总空间、已用空间、空闲空间、inode 数量等。因此,df 的执行速度非常快,因为它不需要遍历所有目录和文件。

    • 它统计什么:文件系统上所有已分配的磁盘块(包括被文件占用的和部分被保留的)。

    du (Disk Usage)

    • 工作原理du 命令会递归地遍历指定目录下的每一个文件和子目录,然后累加每个文件占用的磁盘空间大小。它的结果基于当前用户权限下能看到的文件。

    • 它统计什么:所有文件实际占用的磁盘块的总和。


    2. 导致差异的常见原因分析

    正是因为上述不同的工作原理,导致了以下几种常见的不一致情况:

    原因一:文件被删除但未被释放(最常见!)

    这是导致 df 显示空间已用而 du 找不到对应文件的最主要原因。

    • 原理:当一个文件正在被某个进程使用时,如果它被删除(rm),Linux 并不会立即释放其占用的磁盘空间。该进程仍然持有该文件的句柄,可以继续读写它。此时,该文件在目录中的条目(entry)消失了,所以 du 无法统计到它。但该文件占用的磁盘块在文件系统中仍然被标记为“已使用”,直到所有打开它的进程都关闭该文件后,空间才会被释放。

    • 表现df 显示磁盘使用率很高,但 du -sh / 统计根目录占用的总空间却小很多。

    • 解决方法

    1. 使用 lsof | grep deleted 命令查找已被删除但仍被进程打开的文件及其进程ID(PID)。

    2. 确认无误后,重启或终止相关进程(kill -9 <PID>),空间便会释放。

    原因二:文件系统保留空间(Reserved Blocks)

    • 原理:默认情况下,Ext3/Ext4 等文件系统会保留约 5% 的磁盘空间(可由 tune2fs 调整)给 root 用户。这样做的目的是在磁盘空间写满时,为 root 用户保留一定的操作空间(例如执行必要的恢复命令),防止系统完全崩溃。

    • 表现df 会把这 5% 的保留空间计入“已用”空间,因为它对普通用户不可用。而 du 不会统计这部分空间,因为它不是被任何文件占用的。

    • 计算:对于一个 100G 的分区,df 可能会显示 95G 可用,5G 已用(其中一部分就是保留空间),即使一个文件都没存。

    原因三:挂载点与其他文件系统

    • 原理:如果在 /data 目录下挂载了另一个磁盘(例如 /dev/sdb1),那么:

      • du -sh /data 会统计挂载在 /data 上的文件系统(/dev/sdb1)中所有文件的大小。

      • df /data 显示的是 /dev/sdb1 这个独立文件系统的使用情况。

      • 通常这里是一致的,但如果 /data 目录本身在根分区(/)中有一些文件(在挂载前存在的),这些文件会被挂载操作“隐藏”。du 看不到它们(因为访问路径被挂载点覆盖了),而 df 统计的是两个不同的文件系统,所以不会产生混淆。

    原因四:稀疏文件(Sparse Files)

    • 原理:稀疏文件是一种特殊文件,它允许在文件中存在“空洞”(大量连续的0字节)。应用程序(如虚拟机磁盘镜像)创建它时,文件系统不会为这些空洞分配实际的磁盘块。

    • 表现

      • ls -l 或 du --apparent-size 显示的是文件的逻辑大小,会非常大。

      • du(默认行为)显示的是文件实际占用的磁盘块大小,会小很多。

      • df 反映的是文件系统实际消耗的磁盘块,与 du 的默认行为一致。

    • 示例:一个 100GB 的虚拟机磁盘文件,可能只实际占用 10GB 空间。du -h file 显示 10G,而 ls -lh file 显示 100G

    原因五:文件系统元数据(Metadata)

    • 原理:文件系统自身需要消耗磁盘空间来存储元数据,如 inode 表、磁盘位图、日志文件(对于日志文件系统如 ext3/4, xfs)等。

    • 表现:这部分空间被文件系统占用,但不对应任何用户文件。因此 df 会将其统计为“已用空间”,而 du 根本无法统计这些元数据,从而导致 df 的结果略大于 du


    总结与对比

    特性dfdu
    数据源文件系统超级块(元数据)递归遍历统计文件
    统计视角磁盘块分配情况文件数据占用情况
    速度非常快(直接读元数据)相对慢(需要遍历文件树)
    包含保留空间
    包含被删除但未释放的文件
    包含稀疏文件“空洞”(只算实际块)(只算实际块,但 --apparent-size 算)
    包含元数据(元数据也占用块)

    实践建议

    当遇到磁盘空间不足报警,但 du 找不到大文件时,排查思路如下:

    1. 首先执行 df -h,确认哪个分区使用率高。

    2. 然后执行 du -sh /path/to/mountpoint,查看该分区下文件总大小是否与 df 结果近似。

    3. 如果差异很大,首要怀疑有文件被删除未释放:使用 lsof +L1 或 lsof | grep deleted 命令检查。

    4. 其次考虑是否有隐藏挂载点、稀疏文件等原因。


    云盘扩容后扩展分区操作

    云主机的云盘从控制台100G扩容到300G后,根目录 /dev/vda1 显示还是100G,这通常是因为云盘扩容后只增加了底层存储空间,操作系统内部的分区和文件系统还未扩展。云平台的控制台扩容只是扩大了"物理磁盘"的容量,后续还需要在系统内部进行分区和文件系统的扩展。

    1.确认底层磁盘容量
    在操作系统内执行 lsblk 命令-4-5,它可以查看磁盘本身和分区的真实容量。

    如果 lsblk 显示 /dev/vda 本身已经是300G,而其下的分区 /dev/vda1 还是100G,这就证实了是分区没有扩展-1-8

    2.扩展分区
    确认是分区问题后,需要扩展分区以填满磁盘的可用空间。推荐使用 growpart 工具-5,它能够自动调整分区大小。

    growpart /dev/vda 1

    注意:命令中 vda 和 1 之间的逗号后有一个空格-5。完成后,再次运行 lsblk 检查,此时 /dev/vda1 的大小应该显示为300G左右。

    3.扩展文件系统
    分区扩展后,最后一步是扩展文件系统,这样才能让操作系统真正使用新增的空间。需要根据文件系统类型选择相应的命令。

    • 如果文件系统是 ext4(常见于CentOS、Ubuntu等):

    resize2fs /dev/vda1
    • 如果文件系统是 XFS(常见于较新版本的CentOS、RHEL):

    xfs_growfs /

    注意:对于XFS文件系统,需要指定挂载点(此处根目录为 /),而不是设备名。

    重要提醒与建议

    在进行任何磁盘操作前,请务必注意以下几点:

    • 备份数据:在对磁盘分区和文件系统进行操作前,强烈建议通过云平台创建快照备份数据-1-4,以防操作失误导致数据丢失。

    • 理解步骤:云盘扩容是一个多步骤的过程,控制台扩容后,必须登陆系统完成分区和文件系统的扩展,缺一不可-1-10

    • 命令匹配:务必确保扩展文件系统的命令与系统上的文件系统类型匹配,否则可能报错或无效-5


    参考:

    🔲 ☆

    生成式AI、机器学习课程学习

    李宏毅老师简介

    李宏毅老师是台湾大学电机工程学系的教授,在机器学习和生成式AI领域的教学全球知名,尤其在华语社区拥有极高声誉。YouTube上的课程累计超过30万订阅,影响力横跨学界与业界。李老师的的教学风格以生动、幽默著称,擅长用“宝可梦 vs 数码宝贝”等通俗易懂的例子,将复杂的深度学习、Transformer等前沿技术讲得清晰透彻,被许多学习者誉为“AI领域最好的启蒙老师之一“。

    个人网站https://speech.ee.ntu.edu.tw/~hylee/index.php

    YouTube 频道https://www.youtube.com/@HungyiLeeNTU

    课程观看列表https://www.youtube.com/@HungyiLeeNTU/playlists

    李宏毅老师近两年的课程紧跟技术前沿,主要可以分为两大核心:

    1. 《生成式人工智能导论》 (Introduction to Generative AI)

    • 学期:2024 春季

    • 课程内容详细介绍:这是一门面向初学者的大规模课程,旨在帮助学习者掌握生成式AI(如ChatGPT、AI绘图)的基础原理、技术演变和应用场景。课程不仅讲解理论,更侧重于探讨如何有效利用现有的大型语言模型(LLM),内容涵盖提示工程、任务拆解、让AI使用工具等实用技巧。这门课在台大吸引了超过1000名学生选修,其中包括近200名文学院学生,足以证明其入门友好性和跨学科影响力。

    • 适合人群:对AI感兴趣,希望系统了解生成式AI原理和应用,或想提升与AI协作效率的学习者。

    2. 《机器学习》 (Machine Learning)

    • 学期:2025 春季

    • 课程内容详细介绍:这是李宏毅老师的经典招牌课程,2025年版本进行了重大改革。内容从传统的深度学习基础,全面转向大语言模型(LLM)时代最前沿的技术,重点包括:

      • AI Agent(人工智能智能体):讲解AI如何感知、规划、行动和使用工具。

      • RAG(检索增强生成):介绍如何让大模型结合外部知识库以生成更准确的答案。

      • 模型内部机制与可解释性:深入探讨语言模型的“黑盒子”,分析神经元如何运作。

      • 模型训练与优化:涵盖预训练、后训练、模型合并(Model Merging)以及像DeepSeek-R1这样的模型如何进行“深度思考”。

    • 适合人群:已具备一定机器学习基础,希望深入掌握LLM、AI Agent等当代核心技术的学习者。

    李宏毅 (Hung-yi Lee) 课程列表

    2026 年

    学期课程名称链接
    SpringML (Machine Learning)https://speech.ee.ntu.edu.tw/~hylee/ml/2026-spring.php

    2025 年

    学期课程名称链接
    FallIntroduction to GenAI and MLhttps://speech.ee.ntu.edu.tw/~hylee/GenAI-ML/2025-fall.php
    SpringML (Machine Learning)https://speech.ee.ntu.edu.tw/~hylee/ml/2025-spring.php

    2024 年

    学期课程名称链接
    SpringIntroduction to Generative AIhttps://speech.ee.ntu.edu.tw/~hylee/genai/2024-spring.php

    2023 年

    学期课程名称链接
    FallLinear Algebrahttps://voidful.github.io/LA_2023_fall/2023-fall.html
    SpringML (Machine Learning)https://speech.ee.ntu.edu.tw/~hylee/ml/2023-spring.php

    2022 年

    学期课程名称链接
    FallLinear Algebrahttps://googly-mingto.github.io/LA_2022_fall/2022-fall.html
    SpringML (Machine Learning)https://speech.ee.ntu.edu.tw/~hylee/ml/2022-spring.php

    2021 年

    学期课程名称链接
    FallLinear Algebrahttps://speech.ee.ntu.edu.tw/~hylee/la/2021-fall.php
    SpringML (Machine Learning)https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.php

    2020 年

    学期课程名称链接
    FallLinear Algebrahttp://speech.ee.ntu.edu.tw/~tlkagk/courses/LA_2020/policy.pdf
    SpringML (Machine Learning)https://speech.ee.ntu.edu.tw/~hylee/ml/2020-spring.php
    SpringDLHLP (Deep Learning for Human Language Processing)https://speech.ee.ntu.edu.tw/~hylee/dlhlp/2020-spring.php

    2019 年

    学期课程名称链接
    FallLinear Algebrahttps://speech.ee.ntu.edu.tw/~hylee/la/2019-fall.php
    SpringML (Machine Learning)https://speech.ee.ntu.edu.tw/~hylee/ml/2019-spring.php

    2018 年

    学期课程名称链接
    FallLinear Algebrahttps://speech.ee.ntu.edu.tw/~hylee/la/2018-fall.php
    SpringMLDS (Machine Learning and Deep Structured)https://speech.ee.ntu.edu.tw/~hylee/mlds/2018-spring.php

    2017 年

    学期课程名称链接
    FallML (Machine Learning)https://speech.ee.ntu.edu.tw/~hylee/ml/2017-fall.php
    SpringML (Machine Learning)https://speech.ee.ntu.edu.tw/~hylee/ml/2017-spring.php
    SpringMLDS (Machine Learning and Deep Structured)https://speech.ee.ntu.edu.tw/~hylee/mlds/2017-spring.php

    2016 年

    学期课程名称链接
    FallML (Machine Learning)https://speech.ee.ntu.edu.tw/~hylee/ml/2016-fall.php
    SpringLinear Algebrahttps://speech.ee.ntu.edu.tw/~hylee/la/2016-spring.php

    2015 年

    学期课程名称链接
    FallMLDS (Machine Learning and Having It Deep and Structured)https://speech.ee.ntu.edu.tw/~hylee/mlds/2015-fall.php

    2014 年

    学期课程名称链接
    FallCircuithttps://speech.ee.ntu.edu.tw/~hylee/circuit/2014-fall.php


    参考:macOS安装龙虾OpenClaw

    🔲 ☆

    大模型并发场景GPU显存资源计算

    前面两篇文章主要介绍了大模型GPU资源需求计算及使用场景:大模型GPU显存算力需求计算大模型推理资源需求计算及使用场景示例

    在常见并发推理场景中,显存需求会随着并发数的增加而显著增长,因为KV Cache是显存占用的主要变量。下面我们来系统性地介绍并发推理的显存计算方法,并通过7B、32B、70B三个模型的示例进行全面评估。

    一、并发推理显存计算核心公式

    1.1 总显存构成

    总显存 = 模型参数 + KV Cache + 中间激活值 + 系统开销

    1.2 KV Cache显存计算公式

    KV Cache是并发场景下显存增长的主要来源,其精确计算公式如下-7

    KV Cache显存(GB) = 2 × 最大并发请求数 × 序列长度 × 层数 × 隐层维度 × 精度字节数 ÷ (1024³)

    其中:

    • 2:Key和Value两份缓存

    • 最大并发请求数:服务能同时处理的请求数量

    • 序列长度:输入+输出的总token数

    • 层数:Transformer层数

    • 隐层维度:每个token的表示维度

    • 精度字节数:FP16为2,INT8为1

    KV Cache 大小和 并发数有关,和 batch size 无关;batch 只影响一次计算的规模,不改变 KV 总量。

    概念
    并发数 (active_sequences)
    Batch size
    定义
    系统中当前“活着”的序列总数
    单次计算合并处理的序列数
    影响
    决定需要多少份 KV Cache
    决定一次矩阵大小和吞吐
    增长关系
    KV Cache ∝ 并发数 × 序列长度
    与 KV Cache 无关
    举例
    100 用户并发 → 100 份 KV
    batch=16 只是一次算16条,KV 总量仍=100

    1.3 vLLM的内存分配机制

    vLLM通过gpu_memory_utilization参数控制显存分配-7

    可用显存 = 总GPU显存 × gpu_memory_utilization
    模型权重显存 + KV Cache显存 ≤ 可用显存

    通常设置gpu_memory_utilization = 0.8-0.9,预留部分显存用于系统开销和中间激活值-7-8

    1.4 CPU与内存需求

    • CPU核心:建议≥并发数/2,用于数据预处理和调度

    • 系统内存:需存储模型权重副本(用于CPU卸载场景)和数据缓存


    二、7B模型并发推理资源需求

    Llama 2-7BDeepSeek-7B为例,假设模型配置:

    • 层数:32

    • 隐层维度:4096

    • 精度:FP16(2字节/参数)

    2.1 不同并发数的显存需求

    并发数KV Cache显存公式KV Cache显存参数显存总显存需求说明
    12×1×2048×32×4096×2÷(1024³)1.0GB14GB~16GB单用户场景
    42×4×2048×32×4096×2÷(1024³)4.0GB14GB~19GB小团队使用
    82×8×2048×32×4096×2÷(1024³)8.0GB14GB~23GB中等负载
    162×16×2048×32×4096×2÷(1024³)16.0GB14GB~31GB高并发场景

    2.2 资源需求总览

    并发数GPU显存需求推荐GPU配置CPU核心系统内存适用场景
    419GB1×RTX 4090 24GB4-8核32GB个人API服务
    823GB1×RTX 4090 24GB8核64GB中小团队
    1631GB1×A100 40GB 或 2×RTX 40908-16核64-128GB企业级服务

    优化提示:当并发数超过8时,单张RTX 4090 24GB已接近极限,建议使用张量并行(TP)分散到多卡-1


    三、32B模型并发推理资源需求

    Qwen-32BDeepSeek-32B为例,假设模型配置:

    • 层数:64

    • 隐层维度:5120

    • 精度:FP16(2字节/参数)

    3.1 不同并发数的显存需求

    并发数KV Cache显存公式KV Cache显存参数显存总显存需求说明
    12×1×2048×64×5120×2÷(1024³)2.5GB64GB~67GB单用户场景
    42×4×2048×64×5120×2÷(1024³)10.0GB64GB~75GB小团队使用
    82×8×2048×64×5120×2÷(1024³)20.0GB64GB~85GB中等负载
    162×16×2048×64×5120×2÷(1024³)40.0GB64GB~105GB高并发场景

    3.2 资源需求总览

    并发数GPU显存需求推荐GPU配置CPU核心系统内存适用场景
    475GB1×A100 80GB8-16核128GB企业API服务
    885GB2×A100 40GB(TP=2)16核256GB中型负载
    16105GB2×A100 80GB(TP=2)16-32核256-512GB高并发场景

    vLLM配置示例(2×A100 80GB)-1

    vllm serve Qwen-32B \
      --tensor-parallel-size 2 \
      --max-num-seqs 16 \
      --gpu-memory-utilization 0.9

    四、70B模型并发推理资源需求

    Llama 2-70BDeepSeek-70B为例,假设模型配置:

    • 层数:80

    • 隐层维度:8192

    • 精度:FP16(2字节/参数)

    4.1 不同并发数的显存需求

    并发数KV Cache显存公式KV Cache显存参数显存总显存需求说明
    12×1×2048×80×8192×2÷(1024³)5.0GB140GB~146GB单用户场景
    42×4×2048×80×8192×2÷(1024³)20.0GB140GB~161GB小团队使用
    82×8×2048×80×8192×2÷(1024³)40.0GB140GB~181GB中等负载
    162×16×2048×80×8192×2÷(1024³)80.0GB140GB~221GB高并发场景

    4.2 资源需求总览

    并发数GPU显存需求推荐GPU配置CPU核心系统内存适用场景
    4161GB2×A100 80GB(TP=2)16-32核256GB企业API服务
    8181GB4×A100 40GB(TP=4)32核512GB中型负载
    16221GB4×A100 80GB(TP=4)32-64核1TB高并发场景

    五、MoE模型(如DeepSeek-V3)的特殊考量

    混合专家模型(MoE)的并发推理显存计算与稠密模型有所不同-6-9

    5.1 MoE模型显存构成

    总显存 = 共享参数 + 专家参数 + KV Cache + 路由开销

    其中:

    • 共享参数:嵌入层、注意力层等(约占30-50%)

    • 专家参数:分布在多卡上,通过专家并行(EP)优化-6

    • 路由开销:存储专家负载和路由概率,通常小于1%总显存-9

    5.2 并行策略选择

    并发场景推荐并行策略说明
    低并发(<4)TP + EP延迟优先,每个请求由所有GPU协同处理-6
    高并发(≥8)DP + EP吞吐优先,多组GPU副本并行处理不同请求-6

    5.3 资源估算示例(DeepSeek-V3 671B)

    假设模型配置-9

    • 专家数量E=256,每个专家参数量约2.6B

    • 共享参数量约300B

    • 精度:FP8(1字节/参数)

    • 激活专家数K=8(Top-8路由)

    并发数显存需求推荐GPU配置(EP并行)CPU核心系统内存
    4~350GB8×A100 80GB(EP=8)32核512GB
    8~380GB8×A100 80GB(EP=8)32-64核1TB
    16~450GB16×A100 80GB(EP=16)64核+2TB+

    关键提示:MoE模型通过专家并行(EP)可将专家参数分散到多卡,大幅降低单卡显存压力-6-9


    六、并发推理优化策略

    6.1 vLLM核心参数调优

    参数作用推荐值说明
    gpu_memory_utilization显存利用率0.8-0.9预留10-20%用于系统开销-7
    max_num_seqs最大并发数根据显存计算控制KV Cache上限-8
    max_num_batched_tokens批处理token上限4096-8192平衡吞吐与延迟-8
    tensor_parallel_size张量并行度2/4/8模型放不下时启用-1
    enable_expert_parallel专家并行开关True(MoE模型)对DeepSeek等MoE模型有效

    6.2 量化技术

    量化精度参数显存减少KV Cache显存减少适用场景
    INT850%50%高并发、追求吞吐
    INT475%75%超大模型、资源受限

    6.3 抢占与分块预填充

    当KV Cache空间不足时,vLLM会触发抢占(Preemption)机制-8。为避免性能下降:

    • 适当提高gpu_memory_utilization

    • 启用分块预填充(Chunked Prefill)平衡预填充和解码请求-8


    七、快速参考表

    不同并发度下的显存需求速查(FP16)

    模型规模参数显存并发1并发4并发8并发16
    7B14GB16GB19GB23GB31GB
    32B64GB67GB75GB85GB105GB
    70B140GB146GB161GB181GB221GB

    推荐配置速查

    模型规模目标并发GPU配置CPU核心系统内存
    7B81×RTX 4090 24GB8核64GB
    7B162×RTX 4090 24GB(TP=2)16核128GB
    32B82×A100 40GB(TP=2)16核256GB
    32B162×A100 80GB(TP=2)32核512GB
    70B84×A100 40GB(TP=4)32核512GB
    70B164×A100 80GB(TP=4)64核1TB

    总结

    1. 并发推理显存核心公式:总显存 ≈ 参数显存 + 2×并发数×序列长度×层数×隐层维度×精度

    2. KV Cache是并发场景下的主要变量,与并发数成正比增长

    3. vLLM通过gpu_memory_utilizationmax_num_seqs参数控制显存分配-7-8

    4. MoE模型需结合专家并行(EP)优化-6,显存计算需考虑共享参数和专家参数的分布

    5. CPU和内存需求:CPU核心数建议≥并发数/2,系统内存需能容纳完整模型权重


    参考:


    🔲 ☆

    《坏男孩联盟》《黑岩男孩》与《银泰杜梅拉》

    这三部纪录片从不同视角展现了非洲草原上狮子真实而震撼的生活。这些狮王的故事也展现了非洲草原上不同的生存策略:暴力征服、团队协作、智慧统治。每种方式都有其优势和代价。当然,如果没有邪恶的两脚兽干预可能又是另外的结局了!

    纪录片标题核心主角主要内容
    《坏男孩联盟》
    (又称《狮王之路》)
    "坏男孩联盟"
    六头雄狮:恩格拉拉里克(Makulu)、瑞斯塔(Rasta)、大漂亮(Pretty Boy)、秃尾巴(Scar)、怪尾巴(Kinky Tail)、撒旦(Mr. T)
    讲述南非萨比森保护区传奇的"坏男孩联盟"从崛起到统治再到覆灭的完整故事。它们以强大的战斗力、广阔的领地以及极具戏剧性的兄弟情谊而闻名,被认为是狮子界的"顶流男团"。
    《狮子兄弟-大草原求生》"黑岩男孩"联盟
    五兄弟雄师:奥洛希帕 (Oloseepa)、奥洛博尔 (Oloibor)、奥尔帕丹 (Olpadan)、洛伊西亚杜 (Loishiadu) 和洛科卢普 (Lokolup)
    聚焦于马赛马拉草原上"黑岩男孩"五兄弟的成长史。纪录片详细记录了它们如何从一个狮群中长大,最终组成强大的雄狮联盟,在充满暴力与竞争的大草原上艰难求生、建立自己的王国。
    《永世仇敌:狮子与鬣狗》

    一个狮群与多个鬣狗氏族

    (传奇狮王银泰杜梅拉: "银泰杜梅拉"在斯瓦希里语中意为"狮子的命运"或"王者之狮")

    深入探讨非洲草原上狮子与鬣狗之间"不共戴天"的生存竞争。影片通过多个具体而微的故事(如雌狮莫苏米与鬣狗的恩怨、专杀鬣狗的传奇狮王银泰杜梅拉),展现了两个顶级掠食者之间为领地、食物和后代而展开的持久战。

    看完这三部纪录片,相信你会有这种感觉:男人就该像雄师一样去战斗。


    《坏男孩雄狮联盟:狮王之路》

    badboy.jpg

    这是一部由探索频道制作的经典野生动物纪录片,讲述了南非萨比森保护区内一个传奇雄狮联盟——“坏男孩联盟”的兴衰史。

    主角介绍:故事围绕一个由六头雄狮组成的强大联盟展开,核心成员包括带领兄弟们走向辉煌的首领恩格拉拉里克,以及最具代表性的两头年轻雄狮怪头和卷尾。它们从五只被驱逐的幼狮起步,在外来雄狮的带领下,逐渐成长为统治萨比森保护区广大地区的霸主。

    精彩看点

    • 传奇崛起:纪录片详细记录了它们如何通过无数次残酷的战斗,击败并驱逐其他雄狮,最终建立起属于自己的“王朝”。

    • 兄弟情谊:影片着重展现了雄狮之间罕见的深厚情感与紧密合作,它们不仅是猎手,更是彼此最坚实的依靠。

    • 自然法则:在展现辉煌的同时,影片也忠实地记录了它们衰老、疾病以及与新兴势力斗争的过程,揭示了自然界生生不息的残酷法则。

    坏男孩联盟(Mapogo males):传奇的“六巨头“

    《坏男孩联盟》的主角,也许是整个狮界历史上最富盛名、最具传奇色彩的雄狮联盟。

    • 成员构成:由6头雄狮组成的超强联盟,按年龄和地位排列如下:

    排名名字核心特点
    老大恩格拉拉里克联盟绝对领袖,体型巨大,被称为“狮中之王”。童年坎坷,作为外来者寄人篱下,练就了坚毅隐忍的性格,一手将5个弟弟带大。吼声低沉而洪亮,极具辨识度。
    老二瑞斯塔性格相对平和低调,在联盟中地位不高,但仍是战斗力不容小觑的成员。
    老三漂亮男孩与老二为双胞胎,鬃毛俊美。他是老大的忠实拥护者,与老大关系最为亲密。
    老四秃尾巴因尾巴上的毛球残缺而得名。个性强势,自视甚高,除了老大谁都不服,有“小霸王”之称,战力极强。
    老五怪尾巴与老六是亲兄弟,尾巴形状奇特。与老六形影不离,感情深厚,战斗勇猛。
    老六撒旦联盟中最年轻但最凶残、最好斗的成员,杀死狮子数量最多,鬃毛稀疏是其标志。野心勃勃,最终导致了联盟的内部分裂。
    • 统治与陨落:它们从2005年左右开始横扫南非萨比森私人保护区,在巅峰时期几乎统治了所有狮群,据称在一年内导致保护区狮子数量锐减约40%,甚至杀死并吃掉其他狮子的幼崽和同类,因此获得了“坏男孩”(Mapogo,意为流氓或恶棍)的恶名。它们的强大不仅在于数量,更在于极致的团结和恐怖的战斗力。然而,随着2010年后新兴的“保卫者联盟”的挑战、成员间的内讧以及盗猎,这个传奇联盟最终走向瓦解,到2012年左右,六兄弟的故事彻底落幕。

    ◎b站在线观看:


    《狮子兄弟-大草原求生》

    hyboys.jpeg

    这部纪录片由ARTE电视台出品,叙事非常有层次感,精彩地跟踪拍摄了这五头兄弟狮子在马赛马拉长达五年的生活,为我们呈现了一个关于亲情、成长与生存的完整故事。

    • 第1集:登顶之路 (The Path to Dominance)
      故事始于五兄弟的童年。纪录片讲述了它们如何在母亲的抚育下,与狮群的姐妹们一起成长。随着它们两岁生日到来,年轻的雄狮们必须面对离开母亲、独自生存的挑战。这一集的核心,就是记录这五个年轻的兄弟如何开始结成最初的联盟,在危机四伏的草原上迈出独立的第一步。

    • 第2集:丰收季节 (The Season of Plenty)
      随着年岁渐长,五兄弟的狩猎技巧愈发娴熟,开始展现出强大的统治力。但它们的生活并非一帆风顺,不仅要面对饥饿的威胁和狩猎的风险,还要应对狮群内部复杂的关系。与此同时,气候变化和角马大迁徙等自然挑战,也时刻考验着这个年轻联盟的智慧和韧性。

    • 第3集:野牛之争 (The Buffalo Challenge)
      这是联盟走向成熟的终章。此时,以首领奥洛博尔为核心的五兄弟,已经成为这片土地的统治者。它们的主要猎物是强壮且危险的非洲野牛,每一次捕猎都是生死一线的搏斗。这一集集中展现了它们在确立统治地位后,如何作为一支无坚不摧的团队,共同面对最艰巨的挑战,守护自己的领地与荣耀。

    黑岩男孩联盟(Blackrock Boys):正在崛起的“水牛杀手”

    《狮子兄弟-大草原求生》的主角,生活在马赛马拉,是近年来备受关注的雄狮联盟。

    • 成员构成:由5头年轻雄狮组成的兄弟联盟。

    • 名字与由来:它们出生于2017年8月左右,来自“黑岩地区”,因此得名。这五兄弟的父亲是强大的索帕联盟,继承了父辈的优良基因。它们最近被正式命名为:奥洛希帕、奥洛博尔、奥尔帕丹、洛伊西亚杜和洛科卢普

    • 核心特点:与“坏男孩”的“恶名”不同,“黑岩男孩”以出色的捕猎能力著称,尤其以捕杀非洲水牛闻名,被称为 “水牛杀手” 。它们年纪虽轻,但发育良好,非常强势,已经接管了龙盖狮群。纪录片记录了它们如何在充满挑战的草原上成长、学习捕猎、应对竞争者,最终建立自己王国的艰辛历程,是一个关于成长、奋斗和兄弟情谊的励志故事。

    名字 (英译)个性与特点
    Oloibor(奥洛博尔)五兄弟中最强壮、最具领袖气质的“大姐夫杀手”,是联盟无可争议的头领。
    Oloseepa(奥洛希帕)因腿部有伤而微微跛行,但这并不妨碍他成为联盟中最活跃的雄狮。
    Loishiadu (洛伊西亚杜)性格谨慎、内向,不像兄弟们那样爱出风头,常常独自待在一边。
    Lokolup (洛科卢普)总是紧紧跟随着兄弟们,是团队里忠诚的“小跟班”。
    Olpadan (奥尔帕丹)充满雄心壮志,捕猎时总是冲在最前面,是兄弟们中最出色的猎手。

    相关动态与一个悲伤的后续

    值得一提的是,这部纪录片的影响力持续至今。直到2025年和2026年,还有大量网友在Bilibili等平台发布关于“黑岩男孩”联盟的最新动态和讨论,足见这个狮群在大家心中的地位 。

    不过,关于这个传奇联盟,有一个令人难过的后续消息。2025年10月,有消息确认联盟成员之一 “奥胖” (Oloshipa,也即上文中的Olosiadu) 确认死亡,死因疑似与非法捕猎有关 。这篇报道详细讲述了黑岩男孩联盟从崛起到成员接连陨落的悲剧,并深刻反思了人类活动(如牧民扩张、栖息地萎缩、非法捕猎)对狮子生存造成的巨大威胁 。这不仅是一个狮群的故事,更是一记关于生态保护的警钟。

    ◎b站在线观看:黑岩男孩纪录片 - The Entire Life of the Lion Brothers


    《永世仇敌:狮子与鬣狗》

    dml.png

    这部由国家地理频道制作的纪录片,聚焦于非洲草原上狮群与鬣狗群之间延续数百万年的生存战争。

    主角介绍银泰杜梅拉是一头传奇雄狮,生活在博茨瓦纳乔贝国家公园的萨武蒂地区。它与其兄长曼迪弗组成了一个雄狮联盟,共同统治着“中央狮群”。影片中,由它领导的狮群与当地的鬣狗群结下了世代血仇,双方为了领地、食物和后代展开永无休止的争斗。

    精彩看点

    • 宿敌之争:影片深刻剖析了狮子与鬣狗为何成为“永世仇敌”。它们互相伏击、掠夺对方的食物,甚至杀死对方的幼崽,但极少以对方为食,这种竞争本质上是对生存资源的终极争夺。

    • 震撼故事:片中记录了多个惊心动魄的真实故事,如雌狮深夜被鬣狗群围攻而痛失幼崽,以及银泰杜梅拉带领狮群与鬣狗群展开的复仇与反复仇。

    • 生存博弈:通过一个个生动的案例,影片将观众带入非洲荒野的核心战场,展现了物种间为生存而展开的智慧、勇气和力量的博弈。

    传奇事迹:银泰杜梅拉对鬣狗有着刻骨的仇恨,其战斗风格以 “斩首行动” 著称。它曾两次在鬣狗群中,精准地锁定并击杀它们的首领(女王),导致整个鬣狗族群闻风丧胆。

    • 第一战:在一次冲突中,它直接冲向鬣狗女王“老佛爷”,在几十秒内咬断了对方的脊椎,其余鬣狗一哄而散。

    • 第二战:新上任的鬣狗女王不知天高地厚,在银泰杜梅拉的地盘挑衅。这头传奇雄狮再次出击,闪电般将其锁喉杀死,再次震慑了整个鬣狗群。

    性格与结局:银泰杜梅拉体型在雄狮中并不算特别突出,但性格极其凶猛,无所畏惧,甚至敢于挑战大象。它杀鬣狗纯粹是为了消灭仇敌,而非捕食,因此从不食用。然而,它的威名和一身华丽的皮毛引来了人类的贪婪。在它的故事被纪录片传播后不久,它便死于偷猎者的枪口下,最终被制成了标本,令无数人为之扼腕叹息。

    ◎b站在线观看:超经典纪录片:鬣狗杀手银泰杜梅拉狮王传奇(英语完整版)

    🔲 ☆

    macOS安装龙虾OpenClaw

    1773158714189006.jpeg

    OpenClaw是个啥?

    简单说:OpenClaw 是一个开源的个人 AI 助手平台,支持通过多种消息渠道与 AI 交互,让你能把 AI 代理(agent)连接到日常生活和工作流中,处理生活工作中的各种任务。

     OpenClaw 到底是个撒?

    系统要求

    项目
    要求
    Node.js
    ≥ 22
    (通过 node --version 检查)
    操作系统
    macOS、Linux (Window超级不稳定,建议在WSL2上安装)
    AI 提供商密钥
    Anthropic API Key(推荐)、OpenAI 或自定义提供商

    安装步骤

    1.安装nodejs环境:macOS 升级node到指定版本

    2.获取 AI 提供商密钥,免费试用阿里云(百炼平台)API体验额度:OpenClaw接入文档

    • 核心权益: 每个模型 100 万 Tokens

    • 领取地址: 阿里云百炼控制台

    • 领取步骤:

      1)登录百炼控制台。

      2)阅读并同意协议后,系统将自动开通阿里云百炼并发放免费推理额度

    • 特性: 有效期3个月

    • 支持系列: 千问全系、DeepSeek 全系、Kimi 系列、MiniMax 系列、GLM 智谱系列。

    3.安装/配置OpenClaw:OpenClaw保姆安装教程OpenClaw橙皮书-从入门到精通.pdf

    • 安装 OpenClaw:npm install -g openclaw@latest

    • 初始化并安装守护进程:openclaw onboard --install-daemon

    > npm install -g openclaw@latest                                                                               22:54:12 
    npm warn deprecated node-domexception@1.0.0: Use your platform's native DOMException instead
    
    added 534 packages in 59s
    
    96 packages are looking for funding
      run `npm fund` for details
    
    > openclaw onboard --install-daemon                                                                               22:58:07 
    
    &#x1f99e; OpenClaw 2026.3.8 (3caab92) — Open source means you can see exactly how I judge your config.
    
    ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
    ██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██
    ██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██
    ██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██
    ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
                      &#x1f99e; OPENCLAW &#x1f99e;
    
    ┌  OpenClaw onboarding
    │
    ◇  Security ─────────────────────────────────────────────────────────────────────────────────╮
    │                                                                                            │
    │  Security warning — please read.                                                           │
    │                                                                                            │
    │  OpenClaw is a hobby project and still in beta. Expect sharp edges.                        │
    │  By default, OpenClaw is a personal agent: one trusted operator boundary.                  │
    │  This bot can read files and run actions if tools are enabled.                             │
    │  A bad prompt can trick it into doing unsafe things.                                       │
    │                                                                                            │
    │  OpenClaw is not a hostile multi-tenant boundary by default.                               │
    │  If multiple users can message one tool-enabled agent, they share that delegated tool      │
    │  authority.                                                                                │
    │                                                                                            │
    │  If you’re not comfortable with security hardening and access control, don’t run           │
    │  OpenClaw.                                                                                 │
    │  Ask someone experienced to help before enabling tools or exposing it to the internet.     │
    │                                                                                            │
    │  Recommended baseline:                                                                     │
    │  - Pairing/allowlists + mention gating.                                                    │
    │  - Multi-user/shared inbox: split trust boundaries (separate gateway/credentials, ideally  │
    │    separate OS users/hosts).                                                               │
    │  - Sandbox + least-privilege tools.                                                        │
    │  - Shared inboxes: isolate DM sessions (`session.dmScope: per-channel-peer`) and keep      │
    │    tool access minimal.                                                                    │
    │  - Keep secrets out of the agent’s reachable filesystem.                                   │
    │  - Use the strongest available model for any bot with tools or untrusted inboxes.          │
    │                                                                                            │
    │  Run regularly:                                                                            │
    │  openclaw security audit --deep                                                            │
    │  openclaw security audit --fix                                                             │
    │                                                                                            │
    │  Must read: https://docs.openclaw.ai/gateway/security                                      │
    │                                                                                            │
    ├────────────────────────────────────────────────────────────────────────────────────────────╯
    │
    ◇  I understand this is personal-by-default and shared/multi-user use requires lock-down. Continue?
    │  Yes
    │
    ◇  Onboarding mode
    │  QuickStart
    │
    ◇  QuickStart ─────────────────────────╮
    │                                      │
    │  Gateway port: 18789                 │
    │  Gateway bind: Loopback (127.0.0.1)  │
    │  Gateway auth: Token (default)       │
    │  Tailscale exposure: Off             │
    │  Direct to chat channels.            │
    │                                      │
    ├──────────────────────────────────────╯
    │
    ◇  Model/auth provider
    │  Custom Provider
    │
    ◇  API Base URL
    │  https://dashscope.aliyuncs.com/compatible-mode/v1
    │
    ◇  How do you want to provide this API key?
    │  Paste API key now
    │
    ◇  API Key (leave blank if not required)
    │  sk-xxxooo
    │
    ◇  Endpoint compatibility
    │  OpenAI-compatible
    │
    ◇  Model ID
    │  qwen-plus
    │
    ◇  Verification successful.
    │
    ◇  Endpoint ID
    │  custom-dashscope-aliyuncs-com
    │
    ◇  Model alias (optional)
    │
    Configured custom provider: custom-dashscope-aliyuncs-com/qwen-plus
    │
    ◇  Channel status ────────────────────────────╮
    │                                             │
    │  Telegram: needs token                      │
    │  WhatsApp (default): not linked             │
    │  Discord: needs token                       │
    │  Slack: needs tokens                        │
    │  Signal: needs setup                        │
    │  signal-cli: missing (signal-cli)           │
    │  iMessage: needs setup                      │
    │  imsg: missing (imsg)                       │
    │  IRC: not configured                        │
    │  Google Chat: not configured                │
    │  LINE: not configured                       │
    │  Feishu: install plugin to enable           │
    │  Google Chat: install plugin to enable      │
    │  Nostr: install plugin to enable            │
    │  Microsoft Teams: install plugin to enable  │
    │  Mattermost: install plugin to enable       │
    │  Nextcloud Talk: install plugin to enable   │
    │  Matrix: install plugin to enable           │
    │  BlueBubbles: install plugin to enable      │
    │  LINE: install plugin to enable             │
    │  Zalo: install plugin to enable             │
    │  Zalo Personal: install plugin to enable    │
    │  Synology Chat: install plugin to enable    │
    │  Tlon: install plugin to enable             │
    │                                             │
    ├─────────────────────────────────────────────╯
    │
    ◇  How channels work ───────────────────────────────────────────────────────────────────────╮
    │                                                                                           │
    │  DM security: default is pairing; unknown DMs get a pairing code.                         │
    │  Approve with: openclaw pairing approve <channel> <code>                                  │
    │  Public DMs require dmPolicy="open" + allowFrom=["*"].                                    │
    │  Multi-user DMs: run: openclaw config set session.dmScope "per-channel-peer" (or          │
    │  "per-account-channel-peer" for multi-account channels) to isolate sessions.              │
    │  Docs: channels/pairing              │
    │                                                                                           │
    │  Telegram: simplest way to get started — register a bot with @BotFather and get going.    │
    │  WhatsApp: works with your own number; recommend a separate phone + eSIM.                 │
    │  Discord: very well supported right now.                                                  │
    │  IRC: classic IRC networks with DM/channel routing and pairing controls.                  │
    │  Google Chat: Google Workspace Chat app with HTTP webhook.                                │
    │  Slack: supported (Socket Mode).                                                          │
    │  Signal: signal-cli linked device; more setup (David Reagans: "Hop on Discord.").         │
    │  iMessage: this is still a work in progress.                                              │
    │  LINE: LINE Messaging API webhook bot.                                                    │
    │  Feishu: 飞书/Lark enterprise messaging with doc/wiki/drive tools.                        │
    │  Nostr: Decentralized protocol; encrypted DMs via NIP-04.                                 │
    │  Microsoft Teams: Bot Framework; enterprise support.                                      │
    │  Mattermost: self-hosted Slack-style chat; install the plugin to enable.                  │
    │  Nextcloud Talk: Self-hosted chat via Nextcloud Talk webhook bots.                        │
    │  Matrix: open protocol; install the plugin to enable.                                     │
    │  BlueBubbles: iMessage via the BlueBubbles mac app + REST API.                            │
    │  Zalo: Vietnam-focused messaging platform with Bot API.                                   │
    │  Zalo Personal: Zalo personal account via QR code login.                                  │
    │  Synology Chat: Connect your Synology NAS Chat to OpenClaw with full agent capabilities.  │
    │  Tlon: decentralized messaging on Urbit; install the plugin to enable.                    │
    │                                                                                           │
    ├───────────────────────────────────────────────────────────────────────────────────────────╯
    │
    ◇  Select channel (QuickStart)
    │  Skip for now
    Updated ~/.openclaw/openclaw.json
    Workspace OK: ~/.openclaw/workspace
    Sessions OK: ~/.openclaw/agents/main/sessions
    │
    ◇  Web search ────────────────────────────────────────╮
    │                                                     │
    │  Web search lets your agent look things up online.  │
    │  Choose a provider and paste your API key.          │
    │  Docs: https://docs.openclaw.ai/tools/web           │
    │                                                     │
    ├─────────────────────────────────────────────────────╯
    │
    ◇  Search provider
    │  Skip for now
    │
    ◇  Skills status ─────────────╮
    │                             │
    │  Eligible: 3                │
    │  Missing requirements: 48   │
    │  Unsupported on this OS: 0  │
    │  Blocked by allowlist: 0    │
    │                             │
    ├─────────────────────────────╯
    │
    ◇  Configure skills now? (recommended)
    │  No
    │
    ◇  Hooks ──────────────────────────────────────────────────────────────────╮
    │                                                                          │
    │  Hooks let you automate actions when agent commands are issued.          │
    │  Example: Save session context to memory when you issue /new or /reset.  │
    │                                                                          │
    │  Learn more: https://docs.openclaw.ai/automation/hooks                   │
    │                                                                          │
    ├──────────────────────────────────────────────────────────────────────────╯
    │
    ◇  Enable hooks?
    │  Skip for now
    Config overwrite: /Users/buhaihui/.openclaw/openclaw.json (sha256 581c8ed510ec4559901d459d066548468f72796357a5832fcf102b01fed34664 -> fca7ba4e02ba957f8762db644b7d98787db07c3840d287029a5b9fa305a6f9c6, backup=/Users/buhaihui/.openclaw/openclaw.json.bak)
    │
    ◇  Gateway service runtime ────────────────────────────────────────────╮
    │                                                                      │
    │  QuickStart uses Node for the Gateway service (stable + supported).  │
    │                                                                      │
    ├──────────────────────────────────────────────────────────────────────╯
    │
    ◒  Installing Gateway service….
    Installed LaunchAgent: /Users/buhaihui/Library/LaunchAgents/ai.openclaw.gateway.plist
    Logs: /Users/buhaihui/.openclaw/logs/gateway.log
    ◇  Gateway service installed.
    │
    ◇
    Agents: main (default)
    Heartbeat interval: 30m (main)
    Session store (main): /Users/buhaihui/.openclaw/agents/main/sessions/sessions.json (0 entries)
    │
    ◇  Optional apps ────────────────────────╮
    │                                        │
    │  Add nodes for extra features:         │
    │  - macOS app (system + notifications)  │
    │  - iOS app (camera/canvas)             │
    │  - Android app (camera/canvas)         │
    │                                        │
    ├────────────────────────────────────────╯
    │
    ◇  Control UI ─────────────────────────────────────────────────────────────────────╮
    │                                                                                  │
    │  Web UI: http://127.0.0.1:18789/                                                 │
    │  Web UI (with token):                                                            │
    │  http://127.0.0.1:18789/#token=b335b8d2ac131c84fb63ecf8d79ee2d14c8e1ded73f7aa3c  │
    │  Gateway WS: ws://127.0.0.1:18789                                                │
    │  Gateway: reachable                                                              │
    │  Docs: https://docs.openclaw.ai/web/control-ui                                   │
    │                                                                                  │
    ├──────────────────────────────────────────────────────────────────────────────────╯
    │
    ◇  Start TUI (best option!) ─────────────────────────────────╮
    │                                                            │
    │  This is the defining action that makes your agent you.    │
    │  Please take your time.                                    │
    │  The more you tell it, the better the experience will be.  │
    │  We will send: "Wake up, my friend!"                       │
    │                                                            │
    ├────────────────────────────────────────────────────────────╯
    │
    ◇  Token ────────────────────────────────────────────────────────────────────────────────────╮
    │                                                                                            │
    │  Gateway token: shared auth for the Gateway + Control UI.                                  │
    │  Stored in: ~/.openclaw/openclaw.json (gateway.auth.token) or OPENCLAW_GATEWAY_TOKEN.      │
    │  View token: openclaw config get gateway.auth.token                                        │
    │  Generate token: openclaw doctor --generate-gateway-token                                  │
    │  Web UI keeps dashboard URL tokens in memory for the current tab and strips them from the  │
    │  URL after load.                                                                           │
    │  Open the dashboard anytime: openclaw dashboard --no-open                                  │
    │  If prompted: paste the token into Control UI settings (or use the tokenized dashboard     │
    │  URL).                                                                                     │
    │                                                                                            │
    ├────────────────────────────────────────────────────────────────────────────────────────────╯
    │
    ◇  How do you want to hatch your bot?
    │  Do this later
    │
    ◇  Later ───────────────────────────────────────────╮
    │                                                   │
    │  When you're ready: openclaw dashboard --no-open  │
    │                                                   │
    ├───────────────────────────────────────────────────╯
    │
    ◇  Workspace backup ────────────────────────────────────────╮
    │                                                           │
    │  Back up your agent workspace.                            │
    │  Docs: https://docs.openclaw.ai/concepts/agent-workspace  │
    │                                                           │
    ├───────────────────────────────────────────────────────────╯
    │
    ◇  Security ──────────────────────────────────────────────────────╮
    │                                                                 │
    │  Running agents on your computer is risky — harden your setup:  │
    │  https://docs.openclaw.ai/security                              │
    │                                                                 │
    ├─────────────────────────────────────────────────────────────────╯
    │
    ◇  Shell completion ───────────────────────────────────────────────────────╮
    │                                                                          │
    │  Shell completion installed. Restart your shell or run: source ~/.zshrc  │
    │                                                                          │
    ├──────────────────────────────────────────────────────────────────────────╯
    │
    ◇  Web search ───────────────────────────────────────╮
    │                                                    │
    │  Web search was skipped. You can enable it later:  │
    │    openclaw configure --section web                │
    │                                                    │
    │  Docs: https://docs.openclaw.ai/tools/web          │
    │                                                    │
    ├────────────────────────────────────────────────────╯
    │
    ◇  What now ─────────────────────────────────────────────────────────────╮
    │                                                                        │
    │  What now: https://openclaw.ai/showcase ("What People Are Building").  │
    │                                                                        │
    ├────────────────────────────────────────────────────────────────────────╯
    │
    └  Onboarding complete. Use the dashboard link above to control OpenClaw.

    使用OpenClaw

    • TUI 终端管理:openclaw tui

    1773165195928701.png

    • 浏览器访问:openclaw dashboard

    1773161074642924.png

    • 停止openclaw:

    # 方法1:OpenClaw 官方停止命令
    openclaw gateway stop
    
    # 方法2:强制杀死所有 OpenClaw 进程(推荐)
    pkill -f openclaw
    
    # 方法3:杀死占用 18789 端口的进程(若端口被占用)
    lsof -i :18789 | grep -v PID | awk '{print $2}' | xargs kill -9 2>/dev/null


    OpenClaw 命令速查表

    核心命令

    命令说明
    openclaw --help显示所有命令
    openclaw --version显示版本号
    openclaw status显示频道健康和最近会话
    openclaw dashboard打开控制 UI
    openclaw tui打开终端 UI
    openclaw docs搜索在线文档
    openclaw doctor健康检查 + 快速修复

    Gateway(网关)

    openclaw gateway              # 启动本地网关
    openclaw gateway --port 18789 # 指定端口
    openclaw gateway --force      # 强制启动(杀占用进程)
    openclaw gateway status       # 查看网关状态
    openclaw gateway stop         # 停止网关
    openclaw gateway restart      # 重启网关
    openclaw logs --follow        # 跟踪网关日志

    Agent(代理)

    openclaw agent --message "任务描述"           # 运行一次 agent
    openclaw agent --to +1234567890 --message "Hi" # 发送到指定目标
    openclaw agents list                          # 列出所有 agent
    openclaw agents kill <id>                     # 终止 agent

    Channels(频道)

    openclaw channels list              # 列出已登录频道
    openclaw channels login --verbose   # 登录新频道(显示 QR)
    openclaw message send --channel telegram --target @chat --message "Hi"
    openclaw message read <id>          # 读取消息
    openclaw directory lookup <name>    # 查找联系人/群组 ID

    Memory(记忆)

    openclaw memory search "关键词"     # 搜索记忆
    openclaw memory reindex             # 重建索引

    Cron(定时任务)

    openclaw cron list                  # 列出定时任务
    openclaw cron add                   # 添加任务
    openclaw cron run <jobId>           # 立即执行任务
    openclaw cron runs <jobId>          # 查看执行历史

    Config & Security(配置与安全)

    openclaw config                     # 配置向导
    openclaw config get <key>           # 获取配置
    openclaw config set <key> <value>   # 设置配置
    openclaw security audit             # 安全检查
    openclaw secrets list               # 列出密钥

    Skills & Plugins(技能与插件)

    openclaw skills list                # 列出可用技能
    openclaw skills inspect <name>      # 查看技能详情
    openclaw plugins list               # 列出插件
    openclaw plugins install <name>     # 安装插件

    Update & Backup(更新与备份)

    openclaw update check               # 检查更新
    openclaw update install             # 安装更新
    openclaw backup create              # 创建备份
    openclaw backup verify              # 验证备份
    openclaw reset                      # 重置配置(保留 CLI)

    高级命令

    命令说明
    openclaw acp *Agent Control Protocol 工具
    openclaw browser *管理浏览器(Chrome/Chromium)
    openclaw node *管理无节点主机服务
    openclaw sandbox *管理沙盒容器
    openclaw webhooks *Webhook 集成
    openclaw models *模型发现与配置
    openclaw sessions *查看存储的会话
    openclaw approvals *管理执行审批

    常用示例

    # 发送 WhatsApp 消息
    openclaw message send --target +15555550123 --message "Hi"
    
    # 运行 agent 并发送回复
    openclaw agent --to +15555550123 --message "总结今天的工作" --deliver
    
    # 开发模式(隔离状态)
    openclaw --dev gateway
    
    # 生成 Shell 补全
    openclaw completion > ~/.bash_completion
    
    # 查看模型配置
    openclaw models list

    完整文档: https://docs.openclaw.ai/cli


    参考:


    🔲 ☆

    大模型推理资源需求计算及使用场景示例

    上一篇我们了解了 大模型GPU显存算力需求计算这次我们把CPU和内存的需求也一起纳入考量。在异构计算(CPU+GPU协同)和纯CPU推理日益普及的今天,了解这三者的需求对于在不同硬件上部署大模型至关重要。

    一、三大资源的核心作用与估算原则

    在估算之前,我们需要明确CPU、内存和GPU显存在模型推理中分别扮演什么角色:

    1. GPU显存:主要用于存储模型参数、KV Cache以及计算过程中的中间激活值-7。它是决定模型能否在GPU上运行的核心瓶颈。

    2. 系统内存 (RAM)

    • 纯CPU推理时,内存需要容纳整个模型,其需求与模型大小直接相关-5-8

    • GPU显存不足时(如使用CPU卸载或异构计算),内存需要存储完整的模型权重,并实时与GPU进行数据传输-3-7

  • CPU

    • 负责数据调度、指令下发,并在异构计算场景下承担部分计算任务(如MoE专家层计算、Attention计算),以避免GPU因等待数据传输而空闲-3-10。CPU的核心数和指令集(如AVX2, AMX)直接影响卸载计算的效率-5

    二、综合资源需求估算方法

    下面通过几个典型的部署场景,展示如何同时估算这三项资源的需求。

    场景一:纯GPU推理(高性能,低延迟)

    这是最经典的场景,模型完全加载在GPU上。CPU和内存主要负责管理,负载较轻。

    • 硬件配置:单张或多张高性能GPU(如RTX 4090, A100)

    • 工作机制:模型权重完全驻留在GPU显存,计算全部在GPU上完成-4

    估算示例:DeepSeek-R1 14B (FP16)

    资源类型估算公式 / 依据估算需求备注
    GPU显存参数显存 + KV Cache + 预留~ 16-18 GB根据实测,14B FP16模型约需28GB显存4,但通过优化可降低。此处按常规推理估算。
    系统内存操作系统 + 数据传输缓冲16 - 32 GB主要用于加载模型时的临时存放和系统开销。建议16GB起步,32GB更充裕4
    CPU处理数据加载、指令下发8核以上避免CPU成为瓶颈,影响GPU Utilization4

    场景二:CPU + GPU 异构推理(以显存换内存,突破单卡限制)

    这是当前的热门方案,通过将部分计算(尤其是MoE模型的专家层)卸载到CPU和内存,让显存较小的GPU也能运行超大模型-3-6

    • 硬件配置:消费级GPU(如RTX 3090 24GB) + 大容量内存 + 高性能多核CPU

    • 工作机制:模型完全存储在系统内存中。GPU仅存储Attention等核心层和部分专家,计算时按需从内存拉取数据-6-10

    估算示例:DeepSeek-V3/R1 (671B MoE, 量化版) -3

    资源类型估算公式 / 依据估算需求备注
    GPU显存存储Attention层 + 部分常驻专家~ 24 GB英特尔方案显示,配合HeteroFlow可在24GB显卡上运行3。llama.cpp实测也表明,通过--n-cpu-moe参数可将MoE层卸载,显存占用控制在24GB内6
    系统内存存储完整模型权重~ 140 - 200 GB671B模型即便经过量化,其权重也需要大量内存。华为云的方案中,为类似大规模模型分配了1000Gi内存1。具体取决于量化精度。
    CPU处理卸载的MoE层计算高主频,多核心 (如16核以上)MoE层计算对CPU吞吐量要求高10。Intel方案推荐使用支持AMX指令集的至强® 6 CPU以加速3。llama.cpp测试显示,CPU核心数直接决定卸载后的推理速度10

    场景三:纯CPU推理(极致低成本,边缘计算)

    完全不依赖GPU,仅用CPU和内存运行模型,适合资源受限或成本敏感的场景-5-8

    • 硬件配置:任何带有CPU的计算机(从树莓派到高性能服务器)

    • 工作机制:模型通过极致量化(如INT4)大幅缩小体积,完全在CPU内存中运行,利用CPU指令集(如AVX2)进行计算-5-8

    估算示例:DeepSeek-R1-7B (INT4 量化版) -5-8

    资源类型估算公式 / 依据估算需求备注
    GPU显存不涉及GPU0 GB完全不需要显卡5
    系统内存量化后模型大小 + 运行时开销2 - 4 GB7B模型经4位量化后约3.5GB8。通过分块加载等优化,实际运行内存可控制在2GB以内58
    CPU执行所有模型计算4核以上,支持AVX2指令集用于执行所有推理计算。多核能显著提升推理速度5。在树莓派5(8GB RAM)上实测可运行5

    场景四:极轻量级模型(1-bit时代的新选择)

    微软的BitNet b1.58 1-bit模型展示了未来模型在CPU上运行的巨大潜力-9

    • 工作机制:采用1.58-bit权重,模型体积极度缩小。

    估算示例:BitNet b1.58 2B4T (20亿参数) -9

    资源类型估算需求备注
    GPU显存0 GB (或不必须)专为CPU高效运行设计。
    系统内存~ 400 MB仅需400MB非嵌入式内存,远小于同类模型-9
    CPU普通处理器 (如Apple M2)可在Apple M2芯片上高效运行-9,对CPU要求极低。

    三、快速查询表

    为了方便快速估算,以下整理了不同部署方式和模型规模下的资源需求概览:

    部署模式代表模型与精度GPU显存需求系统内存需求CPU需求典型场景数据来源
    纯GPU推理7B (FP16)~14-16 GB16-32 GB8核以上高性能本地部署4
    14B (FP16)~28-32 GB32 GB+8核以上工作站、研究4
    CPU+GPU异构70B MoE (量化)~24 GB64-128 GB+16核以上,高带宽内存支持单卡跑超大模型36
    120B MoE (量化)~24 GB64 GB+高性能多核CPU (如EPYC)消费级硬件玩转千亿模型6
    纯CPU推理7B (INT4)0 GB2-4 GB4核以上,支持AVX2边缘设备、低成本服务器58
    1.5B (1.58-bit)0 GB< 1 GB任何现代CPU物联网、极低功耗设备9

    [zkqw]

    大模型资源计算需求使用场景示例

    一、7B模型资源需求示例(以Llama 2-7B / DeepSeek-7B为例)

    场景1:纯GPU推理(FP16精度)

    资源类型计算公式需求估算说明
    GPU显存参数(14GB) + KV Cache(~1.5GB) + 激活值(~1.5GB) + 其他(1GB)~18GBBatch Size=1,序列长度2048-9
    CPU核心数据加载与调度4-8核消费级CPU即可满足
    系统内存操作系统+数据缓冲16-32GB用于加载模型时的临时存放

    实际配置建议:RTX 4090 24GB单卡即可流畅运行,推理速度可达25-30 tokens/s-5

    场景2:LoRA微调(参数高效)

    资源类型计算公式需求估算说明
    GPU显存基础模型(14GB) + LoRA参数(~0.1GB) + 梯度(0.1GB) + 优化器(0.4GB) + 激活值(~1.5GB)~16GB仅训练约0.1-1%的参数-2-9
    CPU核心数据预处理与加载8核建议支持AVX2指令集
    系统内存存储原始模型+数据集32-64GB用于数据集缓存和混合精度卸载

    实际配置建议:RTX 4090 24GB单卡可轻松承载,消费级微调首选方案-9

    场景3:全量微调(混合精度)

    资源类型计算公式需求估算说明
    GPU显存参数(14GB) + 梯度(14GB) + 优化器(56GB) + 激活值(~7GB) + 其他(2GB)~93GB采用AdamW优化器,Batch Size=4-2-9
    GPU数量显存需求÷单卡显存2×A100 40GB 或 4×RTX 4090 24GB需张量并行或ZeRO-3-5
    CPU核心≥16核16-32核推荐Intel Xeon或AMD EPYC
    系统内存≥ GPU显存总量128GB支持ZeRO-Offload和数据集缓存

    技术突破:GaLore技术可在24GB显存上实现7B全量训练,优化器状态内存减少65.5%-9


    二、32B模型资源需求示例(以DeepSeek-32B / Qwen-32B为例)

    场景1:纯GPU推理(FP16精度)

    资源类型计算公式需求估算说明
    GPU显存参数(64GB) + KV Cache(~3GB) + 激活值(~6GB) + 其他(2GB)~75GBBatch Size=1,序列长度2048-2-5
    GPU数量1×A100 80GB 或 2×RTX 4090 24GB(模型并行)单卡80GB或双卡并行双卡方案需张量并行-5
    CPU核心数据调度8-16核双卡并行时需更多CPU线程
    系统内存模型临时加载64-128GB存储完整模型权重

    实测性能:A100 80GB单卡推理延迟约650ms,吞吐量12 tokens/s-5

    场景2:QLoRA微调(4-bit量化)

    资源类型计算公式需求估算说明
    GPU显存4-bit参数(16GB) + LoRA参数(~0.3GB) + 优化器(~1.2GB) + 激活值(~3GB)~20-24GB使用GPTQ/AWQ量化,微调约0.5%参数-2-6
    GPU数量1×RTX 4090 24GB 或 1×A6000 48GB单卡可行消费级显卡的极限-6
    CPU核心≥8核8-16核用于数据预处理
    系统内存64GB64GB存储原始FP16模型和数据集

    优化要点:结合梯度检查点可进一步降低显存占用约30%-3

    场景3:全量微调(混合精度)

    资源类型计算公式需求估算说明
    GPU显存参数(64GB) + 梯度(64GB) + 优化器(384GB) + 激活值(~32GB)~544GBAdamW优化器,Batch Size=4-2
    GPU数量544GB ÷ 80GB ≈ 7张8×A100 80GB需3D并行(DP+TP+PP)-5
    CPU核心≥32核32-64核推荐双路Xeon Platinum
    系统内存≥1.5×GPU显存≥1TB DDR4 ECC支持大规模数据集

    部署案例:某银行部署32B模型用于反欺诈检测,采用4×A100 80GB集群,准确率达99.2%-10


    三、70B模型资源需求示例(以Llama 2-70B / DeepSeek-70B为例)

    场景1:纯GPU推理(FP16精度)

    资源类型计算公式需求估算说明
    GPU显存参数(140GB) + KV Cache(~6GB) + 激活值(~14GB) + 其他(2GB)~162GBBatch Size=1,序列长度2048-2-8
    GPU数量2×A100 80GB(张量并行) 或 4×RTX 4090 24GB多卡并行必备单卡无法承载FP16版本-6
    CPU核心≥16核16-32核用于数据加载和并行调度
    系统内存128-256GB128GB存储模型权重和中间数据

    实测数据:2×A100 80GB集群推理延迟约1.2s,吞吐量8 tokens/s-5

    场景2:QLoRA微调(4-bit量化)

    资源类型计算公式需求估算说明
    GPU显存4-bit参数(35GB) + LoRA参数(~0.7GB) + 优化器(~2.8GB) + 激活值(~7GB)~45-50GB4-bit量化后显存需求大幅降低-6
    GPU数量1×A6000 48GB 或 1×L40S 48GB单卡专业级GPU消费级显卡无法满足-6
    CPU核心16-32核16核支持数据预处理
    系统内存128GB128GB存储量化前模型和数据集

    成本效益:QLoRA方案使70B微调门槛从数百GB降至50GB以内,TCO降低70%以上-6

    场景3:全量微调(混合精度)

    资源类型计算公式需求估算说明
    GPU显存参数(140GB) + 梯度(140GB) + 优化器(840GB) + 激活值(~70GB)~1.19TB混合精度训练-2-8
    GPU数量1190GB ÷ 80GB ≈ 15张16×A100 80GB 或 8×H100 80GB需3D并行+ZeRO-3-5
    CPU核心32-64核≥64核推荐双路EPYC或Xeon Platinum
    系统内存≥ 2×GPU显存≥2TB DDR4 ECC支持大规模数据加载-8
    网络架构100Gbps RDMAInfiniband或RoCE多卡通信带宽需求高

    能耗成本:单次推理电耗超过500W,适合科研机构或超大规模企业-10


    四、快速选型参考表

    模型规模场景GPU显存需求GPU数量建议CPU核心系统内存适用场景
    7B
    推理16-18GB1×RTX 40904-8核16-32GB个人部署、轻量应用-1-5
    LoRA微调16-24GB1×RTX 40908核32-64GB中小团队微调-2-9
    全量微调~93GB2×A100 40GB16-32核128GB研究机构-2
    32B
    推理64-75GB1×A100 80GB8-16核64-128GB企业级应用-5-10
    QLoRA微调20-24GB1×RTX 40908-16核64GB消费级极限-2-6
    全量微调~544GB8×A100 80GB32-64核≥1TB专业领域训练-5
    70B
    推理140-162GB2×A100 80GB16-32核128-256GB云端服务-6-8
    QLoRA微调45-50GB1×A6000 48GB16-32核128GB专业微调-6
    全量微调~1.2TB16×A100 80GB≥64核≥2TB科研/超大规模企业

    总结与建议

    1. 综合资源使用建议

    • 追求极致性能:聚焦GPU显存,确保能装下模型。

    • 突破显存瓶颈:关注系统内存CPU多核性能,它们是异构计算的关键。

    • 追求极致成本:关注CPU指令集内存容量,通过量化技术在纯CPU环境运行。

    2. 显存估算核心公式

    • 推理:参数量(GB) × 1.2 ≈ 实际需求(含KV缓存和激活值)

    • 全量训练:参数量(GB) × 16-18 ≈ 实际需求(含优化器状态)

    • LoRA微调:参数量(GB) × 2-3 + 10-15% ≈ 实际需求

    3. CPU与内存配置原则

    • 训练场景:CPU核心数 ≥ GPU数量 × 4,系统内存 ≥ GPU显存总量

    • 推理场景:CPU核心数 ≥ GPU数量 × 2,系统内存 ≥ 模型权重大小 × 1.2

    4. CPU与GPU配比原则

    CPU的有效算力(数据处理+调度能力)≥ GPU的算力需求(数据吞吐量),同时控制成本,实现“性价比最优”。

    • 大模型训练(如GB300场景):CPU与GPU配比 1:2 ~ 1:4,优先选择高带宽、多核CPU(如Grace CPU),重点保障数据传输和调度效率;

    • AI推理(如自动驾驶、语音识别):CPU与GPU配比 1:4 ~ 1:8,推理场景数据预处理压力小,可适当减少CPU数量,降低成本;

    • 高清渲染、视频编解码:CPU与GPU配比 1:1 ~ 1:2,这类场景需要CPU承担较多的逻辑处理和任务调度,CPU性能不能太弱;

    • 普通算力场景(如小型AI项目):CPU与GPU配比 1:1 ~ 1:4,根据算力需求灵活调整,优先保证性价比。


    参考:

    [/zkqw]

    🔲 ☆

    大模型GPU显存算力需求计算

    一、显存占用核心组成部分

    大语言模型在GPU上运行时的显存占用主要包括以下几个部分:

    1. 模型参数

    在模型推理时首先需要存储模型本身的参数,其占用的显存计算公式为:参数量 x 参数精度。常用的参数精度有FP32(4字节)、FP16(2字节)、BF16 (2字节)。对于大语言模型,模型参数通常采用FP16BF16。因此,以参数精度为FP16,参数量为7B的模型为例,其所需显存为:7B × 2B = 14 GB

    每个参数根据精度占用不同字节数:

    • FP32(单精度浮点数):4字节/参数

    • FP16(半精度浮点数)/BF16:2字节/参数

    • INT8(8位整数):1字节/参数

    • INT44位整数):0.5字节/参数

    2. 梯度

    • 通常与参数精度相同

    • 训练时需要,推理时不需要

    3. 优化器状态

    • Adam优化器需要保存动量和方差

    • 通常每个参数占用8-12字节(根据优化器类型)

    4. 激活值

    在大语言模型推理过程中,需要计算每层神经元的激活值,其占用显存与批量大小、序列长度和模型架构(层数、隐藏层大小)正相关,关系式可以表示为:激活值显存b×s×h×L×param_bytes

    其中:

    • b(batch size)单次请求批量大小,在作为在线服务时通常为1,作为批处理接口时不为1。

    • s(sequence length):整个序列长度,包括输入输出(token数量)。

    • h(hidden size):模型隐藏层维度。

    • L(Layers):模型Transformer层数。

    • param_bytes:激活值存储的精度,一般为2字节。

    结合以上因素和实践经验,为简化显存估算,且留有一定余量,以一个7B模型为例,b1,s2048,param_bytes2字节时,激活值所占显存可以大致按照10%的模型所占显存进行估算,即:14GB×0.1=1.4GB

    5. KV Cache(推理时)

    为加速大语言模型的推理效率,通常会缓存每层Transformer已经计算完成的键K(Key)和值V(Value),避免每个时间步重新计算所有历史token的注意力机制参数。引入KV缓存后,其计算量从降低至,大幅提升推理速度。与激活值类似,KV缓存占用显存也与批量大小、序列长度、并发度和模型架构(层数、隐藏层大小)正相关,关系式可以表示为:

    其中:

    • 2:表示需要存储K(Key)和V(Value)两个矩阵。

    • b(batch size):单次请求批量大小,在作为在线服务时通常为1,作为批处理接口时不为1。

    • s(sequence length):整个序列长度,包括输入输出(token数量)。

    • h(hidden size):模型隐藏层维度。

    • L(Layers):模型Transformer层数。

    • C(Concurrent):服务接口请求的并发度。

    • param_bytes:激活值存储的精度,一般为2字节 。

    结合以上因素和实践经验,为简化显存估算,且留有一定余量,以一个7B模型为例,当C1,b1,s2048,param_bytes2字节时,KV缓存所占显存也大致按照10%的模型所占显存进行估算,即:

    6. 其他

    除了以上影响因素外,当前批次的输入数据、CUDA核心、PyTorch/TensorFlow深度学习框架本身等也会占用一些显存,通常为1~2GB。

    根据以上因素分析,对于7B的大模型,通常情况下模型推理部署最低需要的显存约为:

    二、资源需求核心计算公式

    1. 推理场景显存公式

    总显存 ≈ 模型参数 + KV Cache + 激活值 + 其他开销(1-2GB)
    
    模型参数 = 参数量 × 精度字节数
    KV Cache = 2 × Batch Size × 序列长度 × 层数 × 隐层维度 × 精度字节数
    激活值 ≈ 参数显存的10-20%(简化估算)

    2. 训练场景显存公式

    总显存 ≈ 模型参数 + 梯度 + 优化器状态 + 激活值 + 其他开销
    
    模型参数 = 参数量 × 2字节(FP16)
    梯度 = 参数量 × 2字节(FP16)
    优化器状态(AdamW)= 参数量 × 12字节(FP32参数副本+动量+方差)
    激活值 = 与Batch Size、序列长度正相关,通常占参数显存的20-50%

    3. CPU与内存需求原则

    • CPU核心数:训练场景建议为GPU数量的2-4倍,推理场景可适当降低

    • 系统内存:训练时建议≥ GPU显存总量,推理时需容纳完整模型权重(特别是CPU卸载场景)

    三、实际计算示例

    示例1:推理场景 - 加载Llama 2 7B模型 (FP16)

    模型信息

    • 参数量:7B = 7 × 10⁹

    • 精度:FP16 (2字节/参数)

    • 假设batch size = 1,序列长度 = 2048

    • 层数 = 32,注意力头数 = 32,隐层维度 = 4096

    计算步骤

    1.模型参数显存

    7B × 2字节 = 14GB

    2.KV Cache显存

    每层KV Cache大小 = 2(Key和Value) × 序列长度 × 隐层维度 × 2字节
    = 2 × 2048 × 4096 × 2 = 33.55MB
    
    总KV Cache = 33.55MB × 32层 ≈ 1.07GB

    中间激活值(估算)≈ 0.5GB

    总显存需求

    14GB + 1.07GB + 0.5GB = 15.57GB
    加上10%预留 ≈ 17.13GB

    结论:至少需要24GB显存的GPU(如RTX 3090/4090)

    示例2:训练场景 - 微调Llama 2 7B (混合精度训练)

    模型信息

    • 参数量:7B

    • 使用混合精度训练(参数存FP16,优化器状态FP32)

    • batch size = 4,序列长度 = 512

    计算步骤

    1. 模型参数(FP16):7B × 2 = 14GB

    2. 梯度(FP16):7B × 2 = 14GB

    3. 优化器状态(Adam):

    • FP32参数副本:7B × 4 = 28GB

    • 动量:7B × 4 = 28GB

    • 方差:7B × 4 = 28GB

    • 小计:84GB

  • 激活值(估算):

    • 与batch size、序列长度相关

    • 粗略估算 ≈ 参数量的20-30% ≈ 2GB

  • 总显存

  • 14GB + 14GB + 84GB + 2GB = 114GB
    加上10%预留 ≈ 125.4GB

    结论:需要多卡训练,如4×A100 (80GB)或8×A100

    示例3:常见模型的推理显存需求

    模型参数量精度理论参数显存实际推理显存
    BERT-base110MFP16220MB约1-2GB
    BERT-large340MFP16680MB约2-3GB
    GPT-2 1.5B1.5BFP163GB约6-8GB
    Llama 2 7B7BFP1614GB约16-20GB
    Llama 2 13B13BFP1626GB约28-32GB
    Llama 2 70B70BFP16140GB约150-160GB
    GPT-3 175B175BFP16350GB约380-400GB

    四、降低显存占用的技巧

    1. 量化技术

    • INT8量化:显存减少50%

    • INT4量化:显存减少75%

    • 示例:Llama 2 7B INT8版本 ≈ 7GB

    2. 参数高效微调

    • LoRA:只训练少量参数

    • 显存需求可降低60-70%

    3. 梯度检查点

    • 用计算换显存

    • 可减少30-50%激活值显存

    4. 分布式策略

    • 模型并行

    • 张量并行

    • 流水线并行

    五、实用工具推荐

    1.LLM 推理: 显存与性能计算器

    2.Hugging Face 显存计算器

    3.大模型训练计算器

    4.LLM显存占用计算器

    5.简易显存估算器

    六、快速估算口诀

    • 推理:参数量(GB) × 1.2 ≈ 实际需求

    • 全参数训练:参数量(GB) × 8-12 ≈ 实际需求

    • LoRA微调:参数量(GB) × 4-6 ≈ 实际需求

    例如:7B模型FP16 = 14GB

    • 推理:14 × 1.2 ≈ 16.8GB

    • 全参数训练:14 × 10 ≈ 140GB

    • LoRA微调:14 × 5 ≈ 70GB


    参考:

    🔲 ☆

    《盐铁论》全文

    1772014748780981.png

    《盐铁论》简介

    《盐铁论》是根据著名的“盐铁会议”记录撰写的重要史书,作者是西汉的桓宽,桓宽字次公,在汉宣帝时举为郎,后任庐江太守丞。昭帝始元六年(公元前81年),下诏将各郡国推举的贤良文学人士聚集京城,调查民间疾苦。这次聚会上,贤良文学们提出,盐铁官府垄断专营和“平准均输”等经济政策是造成百姓疾苦的主要原因,所以请求废除盐、铁和酒的官府专营,并取消均输官。

    均输和平准是汉武帝时期(公元前140年~公元前88年),利用行政手段干预市场和调剂物价的两种措施,均输就是在各地设置均输官,负责征收、买卖和运输货物,地方应交纳的贡物,折合成钱交给均输官,均输官再在各地之间贱买贵卖,调节物价,同时也为国家增加了收入。平准则是官府负责京师和大城市的平抑物价工作,贱时国家收买,贵时国家抛售,抑制奸商的投机倒把行为,稳定物价。

    上述措施是在桑弘羊做大司农时,亲自主持执行的政策,所以,此时官拜御史大夫的桑弘羊当然反对,结果双方展开了一场激烈的辩论,这就是著名的盐铁之议。贤良文学人士信奉儒家思想,桑弘羊则尊崇法家,在这次争论中,双方对民间疾苦的原因、同匈奴的和战政策以及治国方略都有交锋。当时辩论还有记录,后来,桓宽根据记录写了《盐铁论》,成为研究西汉中期历史和桑弘羊的重要史料。

    成书背景:一场决定国策的大辩论

    要理解《盐铁论》,首先要回到那场著名的“盐铁会议”。汉武帝时期(公元前140年~公元前88年),连年征战导致国库空虚,于是推行了盐铁官营、酒类专卖、均输平准等一系列高度集中的财经政策,虽然增加了国家财政收入,但也引发了与民争利、吏治腐败等诸多社会问题-5-9

    汉武帝去世后,年幼的汉昭帝继位,大司马大将军霍光辅政。为了解决社会矛盾,反思武帝时期的内外政策,霍光于汉昭帝始元六年(公元前81年) 召集了一次大规模的会议-6-9。会议的核心议题是是否应该继续推行盐铁官营等政策,因此史称“盐铁会议”。

    会议上形成了泾渭分明的两大阵营:

    • 官方代表:以御史大夫桑弘羊为首,他是武帝时期经济政策的主要制定者和执行者,力主继续推行官营政策,认为这是国家财政和边防安全的保障-3-9

    • 民间代表:从各地推举上来的贤良、文学(合计60余人),他们代表民间利益,深受儒家思想影响,强烈抨击官营政策“与民争利”,要求废除这些政策,还富于民-3-5

    这场辩论持续了五个月之久,规模宏大,论辩激烈,是古代历史上一次空前的政策大讨论-9。会议最终以取消酒类专卖和关内铁官而告结束-5

    作者与成书

    桓宽,字次公,汝南(今河南上蔡)人。他本人并没有参加盐铁会议,但在汉宣帝时期,他根据会议留下的官方记录,进行了艺术性的“推衍”和整理,“增广条目”,将双方你来我往、针锋相对的辩词生动地记录下来,最终写成了这部《盐铁论》-1-2-5

    内容与结构

    《盐铁论》全书六十篇,结构清晰,可以大致分为三个部分-2-7

    1. 第一部分(第一篇至第四十一篇):这是全书的核心,记录了盐铁会议上双方正式辩论的经过。从经济政策开始,逐步扩展到政治、军事、外交等各个方面。

    2. 第二部分(第四十二篇至第五十九篇):记录的是会后的余谈。主要围绕对匈奴的和战政策、法治与德治等问题,双方继续展开深入的讨论-5

    3. 第三部分(第六十篇《杂论》):这是作者桓宽写的后序,表达了他对这场辩论的看法和著书的目的-2

    核心思想:一场全方位的治国方略之争

    虽然书名聚焦于“盐铁”,但书中的辩论远远超出了经济的范畴,是一场关于国家治理方略的全方位论战,其核心交锋点在于:

    辩论主题贤良、文学(儒家/民间立场)桑弘羊等(法家/官方立场)
    义利之辩重义轻利。认为国家应崇尚道德教化,与民争利会败坏社会风气,主张“不与民争利”-2-9肯定“利”的正当性。认为追求国家利益是施行仁义的基础,强大的财政是国家安定和国防安全的保障-2-9
    本末之辩重本抑末。农业是“本”,工商业是“末”。认为官营工商业会导致农业荒废,应鼓励百姓专心务农-2-10本末并重。认为工商业的发展是社会分工的必然,有助于富国兴邦,便利百姓生活,主张国家干预经济以控制豪强-2
    贫富之辩富民优先。主张藏富于民,让百姓自由经营,认为百姓富裕了国家自然会强盛-2富国为先。国家应先集中财力,只有国家富强了,才能有效抵御外敌、稳定社会,最终惠及百姓-2-3
    德法之辩德主刑辅。推崇儒家的“仁政”和“德治”,反对严刑峻法,主张用道德和教化来引导人民,通过和平方式(如和亲)处理与匈奴的关系-7-9法治与霸道。强调严刑峻法对于治理国家、防止奸邪的必要性。在对匈奴问题上,主张以武力为后盾,维护国家安全和帝国威严-7-9

    历史价值与影响

    • 珍贵的历史记录:《盐铁论》生动地再现了西汉中期一场高规格政策辩论的原貌,为后人了解当时的社会矛盾、政治斗争、经济状况和思想潮流提供了第一手资料,可与《史记》《汉书》等正史互为印证-3-5

    • 独特的思想史地位:它记录了中国历史上儒家与法家思想在政治舞台上的一次正面交锋与碰撞。这次辩论标志着儒家思想开始全面介入现实政治,并在此后逐渐占据国家意识形态的主导地位-6-8-9

    • 卓越的文学价值:《盐铁论》采用对话体,语言简洁流畅、论辩犀利,富有气势。它成功地将长达数月的复杂论战组织成结构严谨、首尾连贯的文学作品,在古代散文史上占有重要一席之地-5-7

    • 深远的国际影响:作为一部包含丰富经济思想的古代经典,《盐铁论》很早就流传到海外,被翻译成日、韩、英、法、俄、德等多种语言,引发了国际学术界,特别是经济学界的持久关注和研究-4-9


    《盐铁论》全文在线阅读

    卷一

     1. 本议第一 | 2. 力耕第二 | 3. 通有第三 | 4. 错币第四 | 5. 禁耕第五 | 6. 复古第六

    卷二

     7. 非鞅第七 | 8. 晁错第八 | 9. 刺权第九 | 10. 刺复第十 | 11. 论儒第十一 | 12. 忧边第十二

    卷三

     13. 园池第十三 | 14. 轻重第十四 | 15. 未通第十五

    卷四

     16. 地广第十六 | 17. 贫富第十七 | 18. 毁学第十八 | 19. 褒贤第十九

    卷五

     20. 相刺第二十 | 21. 殊路第二十一 | 22. 讼贤第二十二 | 23. 遵道第二十三 | 24. 论诽第二十四 | 25. 孝养第二十五 | 26. 刺议第二十六 | 27. 利议第二十七 | 28. 国疾第二十八

    卷六

     29. 散不足第二十九 | 30. 救匮第三十 | 31. 箴石第三十一 | 32. 除狭第三十二 | 33. 疾贪第三十三 | 34. 后刑第三十四 | 35. 授时第三十五 | 36. 水旱第三十六

    卷七

     37. 崇礼第三十七 | 38. 备胡第三十八 | 39. 执务第三十九 | 40. 能言第四十 | 41. 取下第四十一 | 42. 击之第四十二

    卷八

     43. 结和第四十三 | 44. 诛秦第四十四 | 45. 伐功第四十五 | 46. 西域第四十六 | 47. 世务第四十七 | 48. 和亲第四十八

    卷九

     49. 繇役第四十九 | 50. 险固第五十 | 51. 论勇第五十一 | 52. 论功第五十二 | 53. 论邹第五十三 | 54. 论灾第五十四

    卷十

     55. 刑德第五十五 | 56. 申韩第五十六 | 57. 周秦第五十七 | 58. 诏圣第五十八 | 59. 大论第五十九 | 60. 杂论第六十


      本议第一


     惟始元六年,有诏书使丞相、御史与所举贤良、文学语。问民间所疾苦。

      文学对曰:“窃闻治人之道,防淫佚之原,广道德之端,抑末利而开仁义,毋示以利,然后教化可兴,而风俗可移也。今郡国有盐、铁、酒榷,均输,与民争利。散敦厚之朴,成贪鄙之化。是以百姓就本者寡,趋末者众。夫文繁则质衰,末盛则质亏。末修则民淫,本修则民悫。民悫则财用足,民侈则饥寒生。愿罢盐、铁、酒榷、均输,所以进本退末,广利农业,便也。”

      大夫曰:“匈奴背叛不臣,数为寇暴于边鄙,备之则劳中国之士,不备则侵盗不止。先帝哀边人之久患,苦为虏所系获也,故修障塞。饬烽燧,屯戍以备之。边用度不足,故兴盐、铁,设酒榷,置均输,蕃货长财,以佐助边费。今议者欲罢之,内空府库之藏,外乏执备之用,使备塞乘城之士饥寒于边,将何以赡之?罢之,不便也。”

      文学曰:“孔子曰:‘有国有家者,不患贫而患不均,不患寡而患不安。’故天子不言多少,诸侯不言利害,大夫不言得丧。畜仁义以风之,广德行以怀之。是以近者亲附而远者悦服。故善克者不战,善战者不师,善师者不阵。修之于庙堂,而折冲还师。王者行仁政,无敌于天下,恶用费哉?”

      大夫曰:“匈奴桀黠,擅恣入塞,犯厉中国,杀伐郡、县、朔方都尉,甚悖逆不轨,宜诛讨之日久矣。陛下垂大惠,哀元元之未赡,不忍暴士大夫于原野;纵难被坚执锐,有北面复匈奴之志,又欲罢盐、铁、均输,扰边用,损武略,无忧边之心,于其义未便也。”

      文学曰:“古者,贵以德而贱用兵。孔子曰:‘远人不服,则修文德以来之。既来之,则安之。’今废道德而任兵革,兴师而伐之,屯戍而备之,暴兵露师,以支久长,转输粮食无已,使边境之士饥寒于外,百姓劳苦于内。立盐、铁,始张利官以给之,非长策也。故以罢之为便也。”

      大夫曰:“古之立国家者,开本末之途,通有无之用,市朝以一其求,致士民,聚万货,农商工师各得所欲,交易而退。易曰:‘通其变,使民不倦。’故工不出,则农用乏;商不出,则宝货绝。农用乏,则谷不殖;宝货绝,则财用匮。故盐、铁、均输,所以通委财而调缓急。罢之,不便也。”

      文学曰:“夫导民以德则民归厚;示民以利,则民俗薄。俗薄则背义而趋利,趋利则百姓交于道而接于市。老子曰:‘贫国若有余。’非多财也,嗜欲众而民躁也。是以王者崇本退末,以礼义防民欲,实菽粟货财。市,商不通无用之物,工不作无用之器。故商所以通郁滞,工所以备器械,非治国之本务也。”

      大夫曰:“管子云:‘国有沃野之饶而民不足于食者,器械不备也。有山海之货而民不足于财者,商工不备也。’陇、蜀之丹漆旄羽,荆、扬之皮革骨象,江南之楠梓竹箭,燕、齐之鱼盐旃裘,兖、豫之漆丝絺纻,养生送终之具也,待商而通,待工而成。故圣人作为舟楫之用,以通川谷,服牛驾马,以达陵陆;致远穷深,所以交庶物而便百姓。是以先帝建铁官以赡农用,开均输以足民财;盐、铁、均输,万民所戴仰而取给者,罢之,不便也。”

      文学曰:“国有沃野之饶而民不足于食者,工商盛而本业荒也;有山海之货而民不足于财者,不务民用而淫巧众也。故川源不能实漏卮,山海不能赡溪壑。是以盘庚萃居,舜藏黄金,高帝禁商贾不得仕宦,所以遏贪鄙之俗,而醇至诚之风也。排困市井,防塞利门,而民犹为非也,况上之为利乎?传曰:‘诸侯好利则大夫鄙,大夫鄙则士贪,士贪则庶人盗。’是开利孔为民罪梯也。”

      大夫曰:“往者,郡国诸侯各以其方物贡输,往来烦杂,物多苦恶,或不偿其费。故郡国置输官以相给运,而便远方之贡,故曰均输。开委府于京师,以笼货物。贱即买,贵则卖。是以县官不失实,商贾无所贸利,故曰平准。平准则民不失职,均输则民齐劳逸。故平准、均输,所以平万物而便百姓,非开利孔而为民罪梯者也。”

      文学曰:“古者之赋税于民也,因其所工,不求所拙。农人纳其获,女工效其功。今释其所有,责其所无。百姓贱卖货物,以便上求。间者,郡国或令民作布絮,吏恣留难,与之为市。吏之所入,非独齐、阿之缣,蜀、汉之布也,亦民间之所为耳。行奸卖平,农民重苦,女工再税,未见输之均也。县官猥发,阖门擅市,则万物幷收。万物幷收,则物腾跃。腾跃,则商贾侔利。自市,则吏容奸。豪吏富商积货储物以待其急,轻贾奸吏收贱以取贵,未见准之平也。盖古之均输,所以齐劳逸而便贡输,非以为利而贾万物也。”

      

          力耕第二


      大夫曰:“王者塞天财,禁关市,执准守时,以轻重御民。丰年岁登,则储积以备乏绝;凶年恶岁,则行币物;流有余而调不足也。昔禹水汤旱,百姓匮乏,或相假以接衣食。禹以历山之金,汤以庄山之铜,铸币以赎其民,而天下称仁。往者财用不足,战士或不得禄,而山东被灾,齐、赵大饥,赖均输之畜,仓廪之积,战士以奉,饥民以赈。故均输之物,府库之财,非所以贾万民而专奉兵师之用,亦所以赈困乏而备水旱之灾也。”

      文学曰:“古者,十一而税,泽梁以时入而无禁,黎民咸被南亩而不失其务。故三年耕而余一年之蓄,九年耕有三年之蓄。此禹、汤所以备水旱而安百姓也。草莱不辟,田畴不治,虽擅山海之财,通百末之利,犹不能赡也。是以古者尚力务本而种树繁,躬耕趣时而衣食足,虽累凶年而人不病也。故衣食者民之本,稼穑者民之务也。二者修,则国富而民安也。诗云:‘百室盈止,妇子宁止’也。”  

          大夫曰:“贤圣治家非一宝,富国非一道。昔管仲以权谲霸,而纪氏以强本亡。使治家养生必于农,则舜不甄陶而伊尹不为庖。故善为国者,天下之下我高,天下之轻我重。以末易其本,以虚荡其实。今山泽之财,均输之藏,所以御轻重而役诸侯也。汝、汉之金,纤微之贡,所以诱外国而钓胡、羌之宝也。夫中国一端之缦,得匈奴累金之物,而损敌国之用。是以骡驴馲驼,衔尾入塞,驒騱騵马,尽为我畜,鼲貂狐貉,采旃文罽,充于内府,而璧玉珊瑚琉璃,咸为国之宝。是则外国之物内流,而利不外泄也。异物内流则国用饶,利不外泄则民用给矣。诗曰:‘百室盈止,妇子宁止。’”

      文学曰:“古者,商通物而不豫,工致牢而不伪。故君子耕稼田鱼,其实一也。商则长诈,工则饰骂,内怀窥窬而心不怍,是以薄夫欺而敦夫薄。昔桀女乐充宫室,文绣衣裳,故伊尹高逝游薄,而女乐终废其国。今骡驴之用,不中牛马之功,鼲貂旃罽,不益锦绨之实。美玉珊瑚出于昆山,珠玑犀象出于桂林,此距汉万有余里。计耕桑之功,资财之费,是一物而售百倍其价也,一揖而中万钟之粟也。夫上好珍怪,则淫服下流,贵远方之物,则货财外充。是以王者不珍无用以节其民,不爱奇货以富其国。故理民之道,在于节用尚本,分土井田而已。”  

          大夫曰:“自京师东西南北,历山川,经郡国,诸殷富大都,无非街衢五通,商贾之所凑,万物之所殖者。故圣人因天时,智者因地财,上士取诸人,中士劳其形。长沮、桀溺,无百金之积,跖蹻之徒,无猗顿之富,宛、周、齐、鲁,商遍天下。故乃商贾之富,或累万金,追利乘羡之所致也。富国何必用本农,足民何必井田也?”

      文学曰:“洪水滔天,而有禹之绩,河水泛滥,而有宣房之功。商纣暴虐,而有孟津之谋,天下烦扰,而有乘羡之富。夫上古至治,民朴而贵本、安愉而寡求。当此之时,道路罕行,市朝生草。故耕不强者无以充虚,织不强者无以掩形。虽有凑会之要,陶、宛之术,无所施其巧。自古及今,不施而得报,不劳而有功者,未之有也。”  

          

          通有第三


      大夫曰:“燕之涿、蓟,赵之邯郸,魏之温轵,韩之荥阳,齐之临淄,楚之宛、陈,郑之阳翟,三川之二周,富冠海内,皆为天下名都,非有助之耕其野而田其地者也,居五诸之冲,跨街衢之路也。故物丰者民衍,宅近市者家富。富在术数,不在劳身;利在势居,不在力耕也。

      文学曰:“荆、扬南有桂林之饶,内有江、湖之利,左陵阳之金,右蜀、汉之材,伐木而树谷,燔莱而播粟,火耕而水耨,地广而饶财;然民鮆窳偷生,好衣甘食,虽白屋草庐,歌讴鼓琴,日给月单,朝歌暮戚。赵、中山带大河,纂四通神衢,当天下之蹊,商贾错于路,诸侯交于道;然民淫好末,侈靡而不务本,田畴不修,男女矜饰,家无斗筲,鸣琴在室。是以楚、赵之民,均贫而寡富。宋、卫、韩、梁,好本稼穑,编户齐民,无不家衍人给。故利在自惜,不在势居街衢;富在俭力趣时,不在岁司羽鸠也。”

      大夫曰:“五行:东方木,而丹、章有金铜之山;南方火,而交趾有大海之川;西方金,而蜀、陇有名材之林;北方水,而幽都有积沙之地。此天地所以均有无而通万物也。今吴、越之竹,隋、唐之材,不可胜用,而曹、卫、梁、宋,采棺转尸;江、湖之鱼,莱、黄之鲐,不可胜食,而邹、鲁、周、韩,藜藿蔬食。天地之利无不赡,而山海之货无不富也;然百姓匮乏,财用不足,多寡不调,而天下财不散也。”

      文学曰:“古者,采椽不斲,茅茨不翦,衣布褐,饭土硎,铸金为鉏,埏埴为器,工不造奇巧,世不宝不可衣食之物,各安其居,乐其俗,甘其食,便其器。是以远方之物不交,而昆山之玉不至。今世俗坏而竞于淫靡,女极纤微,工极技巧,雕素朴而尚珍怪,钻山石而求金银,没深渊求珠玑,设机陷求犀象,张网罗求翡翠,求蛮、貉之物以眩中国,徙邛、筰之货,致之东海,交万里之财,旷日费功,无益于用。是以褐夫匹妇,劳疲力屈,而衣食不足也。故王者禁溢利,节漏费。溢利禁则反本,漏费节则民用给。是以生无乏资,死无转尸也。”

      大夫曰:“古者,宫室有度,舆服以庸;采椽茅茨,非先王之制也。君子节奢刺俭,俭则固。昔孙叔敖相楚,妻不衣帛,马不秣粟。孔子曰:‘不可,大俭极下。’此蟋蟀所为作也。管子曰:‘不饰宫室,则材木不可胜用,不充庖厨,则禽兽不损其寿。无末利,则本业无所出,无黼黻,则女工不施。’故工商梓匠,邦国之用,器械之备也。自古有之,非独于此。弦高贩牛于周,五羖赁车入秦,公输子以规矩,欧冶以镕铸。语曰:‘百工居肆,以致其事。’农商交易,以利本末。山居泽处,蓬蒿尧埆,财物流通,有以均之。是以多者不独衍,少者不独馑。若各居其处,食其食,则是橘柚不鬻,朐卤之盐不出,旃罽不市,而吴、唐之材不用也。”

      文学曰:“孟子云:‘不违农时,谷不可胜食。蚕麻以时,布帛不可胜衣也。斧斤以时,材木不可胜用。田渔以时,鱼肉不可胜食。’若则饰宫室,增台榭,梓匠斲巨为小,以圆为方,上成云气,下成山林,则材木不足用也。男子去本为末,雕文刻镂,以象禽兽,穷物究变,则谷不足食也。妇女饰微治细,以成文章,极伎尽巧,则丝布不足衣也。庖宰烹杀胎卵,煎炙齐和,穷极五味,则鱼肉不足食也。当今世,非患禽兽不损,材木不胜,患僭侈之无穷也;非患无旃罽橘柚,患无狭庐糠糟也。”


      错币第四


          大夫曰:“交币通施,民事不及,物有所幷也。计本量委,民有饥者,谷有所藏也。智者有百人之功,愚者有不更本之事。人君不调,民有相万之富也。此其所以或储百年之余,或不厌糟糠也。民大富,则不可以禄使也;大强,则不可以罚威也。非散聚均利者不齐。故人主积其食,守其用,制其有余,调其不足,禁溢羡,厄利涂,然后百姓可家给人足也。”

      文学曰:“古者,贵德而贱利,重义而轻财。三王之时,迭盛迭衰。衰则扶之,倾则定之。是以夏忠、殷敬、周文,庠序之教,恭让之礼,粲然可得而观也。及其后,礼义弛崩,风俗灭息,故自食禄之君子,违于义而竞于财,大小相吞,泪转相倾。此所以或储百年之余,或无以充虚蔽形也。古之仕者不穑,田者不渔,抱关击柝,皆有常秩,不得兼利尽物。如此,则愚智同功,不相倾也。诗云:‘彼有遗秉,此有滞穗,伊寡妇之利。’言不尽物也。”

      大夫曰:“汤、文继衰,汉兴乘弊。一质一文,非苟易常也。俗弊更法,非务变古也,亦所以救失扶衰也。故教与俗改,弊与世易。夏后以玄贝,周人以紫石,后世或金钱刀布。物极而衰,终始之运也。故山泽无征,则君臣同利,刀币无禁,则奸贞并行。夫臣富则相侈,下专利则相倾也。”  

          文学曰:“古者,市朝而无刁币,各以其所有易所无,抱布贸丝而已。后世即有龟贝金钱,交施之也。币数变而民滋伪。夫救伪以质,防失以礼。汤、文继衰,革法易化,而殷、周道兴。汉初乘弊,而不改易,畜利变币,欲以反本,是犹以煎止燔,以火止沸也。上好礼则民闇饰,上好货则下死利也。”  

          大夫曰:“文帝之时,纵民得铸钱、冶铁、煮盐。吴王擅鄣海泽,邓通专西山。山东奸猾,咸聚吴国,秦、雍、汉、蜀因邓氏。吴、邓钱布天下,故有铸钱之禁。禁御之法立,而奸伪息,奸伪息,则民不期于妄得,而各务其职;不反本何为?故统一,则民不二也;币由上,则下不疑也。”

      文学曰:“往古,币众财通而民乐。其后,稍去旧币,更行白金龟龙,民多巧新币。币数易而民益疑。于是废天下诸钱,而专命水衡三官作。吏匠侵利,或不中式,故有薄厚轻重。农人不习,物模拟之,信故疑新,不知奸贞。商贾以美贸恶,以半易倍。买则失实,卖则失理,其疑或滋益甚。夫铸伪金钱以有法,而钱之善恶无增损于故。择钱则物稽滞,而用人尤被其苦。春秋曰:‘算不及蛮、夷则不行。’故王者外不鄣海泽以便民用,内不禁刀币以通民施。”

      

          禁耕第五


      大夫曰:“家人有宝器,尚函匣而藏之,况人主之山海乎?夫权利之处,必在深山穷泽之中,非豪民不能通其利。异时,盐铁未笼,布衣有朐邴,人君有吴王,皆盐铁初议也。吴王专山泽之饶,薄赋其民,赈赡穷乏,以成私威。私威积而逆节之心作。夫不蚤绝其源而忧其末,若决吕梁,沛然,其所伤必多矣。太公曰:‘一家害百家,百家害诸侯,诸侯害天下,王法禁之。’今放民于权利,罢盐铁以资暴强,遂其贪心,众邪群聚,私门成党,则强御日以不制,而幷兼之徒奸形成也。”

      文学曰:“民人藏于家,诸侯藏于国,天子藏于海内。故民人以垣墙为藏闭,天子以四海为匣匮。天子适诸侯,升自阼阶,诸侯纳管键,执策而听命,示莫为主也。是以王者不畜聚,下藏于民,远浮利,务民之义;义礼立,则民化上。若是,虽汤、武生存于世,无所容其虑。工商之事,欧冶之任,何奸之能成?三桓专鲁,六卿分晋,不以盐铁。故权利深者,不在山海,在朝廷;一家害百家,在萧墙,而不在朐邴也。”  

          大夫曰:“山海有禁,而民不倾;贵贱有平,而民不疑。县官设衡立准,人从所欲,虽使五尺童子适市,莫之能欺。今罢去之,则豪民擅其用而专其利。决市闾巷,高下在口吻,贵贱无常,端坐而民豪,是以养强抑弱而藏于跖也。强养弱抑,则齐民消;若众秽之盛而害五谷。一家害百家,不在朐邴,如何也?”  

          文学曰:“山海者,财用之宝路也。铁器者,农夫之死士也。死士用,则仇雠灭,仇雠灭,则田野辟,田野辟而五谷熟。宝路开,则百姓赡而民用给,民用给则国富。国富而教之以礼,则行道有让,而工商不相豫,人怀敦朴以相接,而莫相利。夫秦、楚、燕、齐,土力不同,刚柔异势,巨小之用,居句之宜,党殊俗易,各有所便。县官笼而一之,则铁器失其宜,而农民失其便。器用不便,则农夫罢于野而草莱不辟。草莱不辟,则民困乏。故盐冶之处,大傲皆依山川,近铁炭,其势咸远而作剧。郡中卒践更者,多不勘,责取庸代。县吧或以户口赋铁,而贱平其准。良家以道次发僦运盐、铁,烦费,百姓病苦之。愚窃见一官之伤千里,未睹其在朐邴也。”

      

          复古第六


      大夫曰:“故扇水都尉彭祖宁归,言:‘盐、铁令品,令品甚明。卒徒衣食县官,作铸铁器,给用甚众,无妨于民。而吏或不良,禁令不行,故民烦苦之。’令意总一盐、铁,非独为利入也,将以建本抑末,离朋党,禁淫侈,绝幷兼之路也。古者,名山大泽不以封,为下之专利也。山海之利,广泽之畜,天地之藏也,皆宜属少府;陛下不私,以属大司农,以佐助百姓。浮食奇民,好欲擅山海之货,以致富业,役利细民,故沮事议者众。铁器兵刃,天下之大用也,非众庶所宜事也。往者,豪强大家,得管山海之利,采铁石鼓铸,煮海为盐。一家聚众,或至千余人,大抵尽收放流人民也。远去乡里,弃坟墓,依倚大家,聚深山穷泽之中,成奸伪之业,遂朋党之权,其轻为非亦大矣!今者,广进贤之途,练择守尉,不待去盐、铁而安民也。”

      文学曰:“扇水都尉所言,当时之权,一切之术也,不可以久行而传世,此非明王所以君国子民之道也。诗云:‘哀哉为犹,匪先民是程,匪大犹是经,维迩言是听。’此诗人刺不通于王道,而善为权利者。孝武皇帝攘九夷,平百越,师旅数起,粮食不足。故立田官,置钱,入谷射官,救急赡不给。今陛下继大功之勤,养劳倦之民,此用麋鬻之时;公卿宜思所以安集百姓,致利除害,辅明主以仁义,修润洪业之道。明主即位以来,六年于兹,公卿无请减除不急之官,省罢机利之人。人权县太久,民良望于上。陛下宣圣德,昭明光,令郡国贤良、文学之士,乘传诣公车,议五帝、三王之道,六艺之风,册陈安危利害之分,指意粲然。今公卿辨议,未有所定,此所谓守小节而遗大体,抱小利而忘大利者也。”  

          大夫曰:“宇栋之内,燕雀不知天地之高;坎井之蛙,不知江海之大;穷夫否妇,不知国家之虑;负荷之商,不知猗顿之富。先帝计外国之利,料胡、越之兵,兵敌弱而易制,用力少而功大,故因势变以主四夷,地滨山海,以属长城,北略河外,开路匈奴之乡,功未卒。盖文王受命伐崇,作吧于丰;武王继之,载尸以行,破商擒纣,遂成王业。曹沬弃三北之耻,而复侵地;管仲负当世之累,而立霸功。故志大者遗小,用权者离俗。有司思师望之计,遂先帝之业,志在绝胡、貉,擒单于,故未遑扣扃之义,而录拘儒之论。”

      文学曰:“燕雀离巢宇而有鹰隼之忧,坎井之蛙离其居而有蛇鼠之患,况翱翔千仞而游四海乎?其祸必大矣!此李斯所以折翼,而赵高没渊也。闻文、武受命,伐不义以安诸侯大夫,未闻弊诸夏以役夷、狄也。昔秦常举天下之力以事胡、越,竭天下之财以奉其用,然众不能毕;而以百万之师,为一夫之任,此天下共闻也。且数战则民劳,久师则兵弊,此百姓所疾苦,而拘儒之所忧也。”


          非鞅第七  


          大夫曰:“昔商君相秦也,内立法度,严刑罚,饬政教,奸伪无所容。外设百倍之利,收山泽之税,国富民强,器械完饰,蓄积有余。是以征敌伐国,攘地斥境,不赋百姓而师以赡。故利用不竭而民不知,地尽西河而民不苦。盐、铁之利,所以佐百姓之急,足军旅之费,务蓄积以备乏绝,所给甚众,有益于国,无害于人。百姓何苦尔,而文学何忧也?”

          文学曰:“昔文帝之时,无盐、铁之利而民富;今有之而百姓困乏,未见利之所利也,而见其害也。且利不从天来,不从地出,一取之民间,谓之百倍,此计之失者也。无异于愚人反裘而负薪,爱其毛,不知其皮尽也。夫李梅实多者,来年为之衰;新谷熟而旧谷为之亏。自天地不能两盈,而况于人事乎?故利于彼者必耗于此,犹阴阳之不并曜,昼夜之有长短也。商鞅峭法长利,秦人不聊生,相与哭孝公。吴起长兵攻取,楚人搔动,相与泣悼王。其后楚日以危,秦日以弱。故利蓄而怨积,地广而祸构,恶在利用不竭而民不知,地尽西河而人不苦也?今商鞅之册任于内,吴起之兵用于外,行者勤于路,居者匮于室,老母号泣,怨女叹息;文学虽欲无忧,其可得也?”

      大夫曰:“秦任商君,国以富强,其后卒幷六国而成帝业。及二世之时,邪臣擅断,公道不行,诸侯叛弛,宗庙隳亡。春秋曰:‘末言尔,祭仲亡也。’夫善歌者使人续其声,善作者使人绍其功。椎车之蝉攫,相土之教也。周道之成,周公之力也。虽有裨谌之草创,无子产之润色,有文、武之规矩,而无周、吕之凿枘,则功业不成。今以赵高之亡秦而非商鞅,犹以崇虎乱殷而非伊尹也。”

      文学曰:“善凿者建周而不拔,善基者致高而不蹶。伊尹以尧、舜之道为殷国基,子孙绍位,百代不绝。商鞅以重刑峭法为秦国基,故二世而夺。刑既严峻矣,又作为相坐之法,造诽谤,增肉刑,百姓斋栗,不知所措手足也。赋敛既烦数矣,又外禁山泽之原,内设百倍之利,民无所开说容言。崇利而简义,高力而尚功,非不广壤进地也,然犹人之病水,益水而疾深,知其为秦开帝业,不知其为秦致亡道也。狐刺之凿,虽公输子不能善其枘。畚土之基,虽良匠不能成其高。譬若秋蓬被霜,遭风则零落,虽有十子产,如之何?故扁鹊不能肉白骨,微、箕不能存亡国也。”  

          大夫曰:“言之非难,行之为难。故贤者处实而效功,亦非徒陈空文而已。昔商君明于开塞之术,假当世之权,为秦致利成业,是以战胜攻取,幷近灭远,乘燕、赵,陵齐、楚,诸侯敛衽,西面而向风。其后,蒙恬征胡,斥地千里,踰之河北,若坏朽折腐。何者?商君之遗谋,备饬素修也。故举而有利,动而有功。夫畜积筹策,国家之所以强也。故弛废而归之民,未睹巨计而涉大道也。”

      文学曰:“商鞅之开塞,非不行也;蒙恬却胡千里,非无功也;威震天下,非不强也;诸侯随风西面,非不从也;然而皆秦之所以亡也。商鞅以权数危秦国,蒙恬以得千里亡秦社稷:此二子者,知利而不知害,知进而不知退,故果身死而众败。此所谓恋朐之智,而愚人之计也,夫何大道之有?故曰:‘小人先合而后忤,初虽乘马,卒必泣血。’此之谓也。”  

          大夫曰:“淑好之人,戚施之所妒也;贤知之士,阘茸之所恶也。是以上官大夫短屈原于顷襄,公伯寮愬子路于季孙。夫商君起布衣,自魏入秦,期年而相之,革法明教,而秦人大治。故兵动而地割,兵休而国富。孝公大说,封之于、商之地方五百里,功如丘山,名传后世。世人不能为,是以相与嫉其能而疵其功也。”

      文学曰:“君子进必以道,退不失义,高而勿矜,劳而不伐,位尊而行恭,功大而理顺;故俗不疾其能,而世不妒其业。今商鞅弃道而用权,废德而任力,峭法盛刑,以虐戾为俗,欺旧交以为功,刑公族以立威,无恩于百姓,无信于诸侯,人与之为怨,家与之为雠,虽以获功见封,犹食毒肉愉饱而罹其咎也。苏秦合纵连横,统理六国,业非不大也;桀、纣与尧、舜并称,至今不亡,名非不长也;然非者不足贵。故事不苟多,名不苟传也。”  

          大夫曰:“缟素不能自分于缁墨,贤圣不能自理于乱世。是以箕子执囚,比干被刑。伍员相阖闾以霸,夫差不道,流而杀之。乐毅信功于燕昭,而见疑于惠王。人臣尽节以徇名,遭世主之不用。大夫种辅翼越王,为之深谋,卒擒强吴,据有东夷,终赐属镂而死。骄主背恩德,听流说,不计其功故也,岂身之罪哉?”

      文学曰:“比干剖心,子胥鸱夷,非轻犯君以危身,强谏以干名也。憯怛之忠诚,心动于内,忘祸患之发于外,志在匡君救民,故身死而不怨。君子能行是不能御非,虽在刑戮之中,非其罪也。是以比干死而殷人怨,子胥死而吴人恨。今秦怨毒商鞅之法,甚于私仇,故孝公卒之日,举国而攻之,东西南北莫可奔走,仰天而叹曰:‘嗟乎,为政之弊,至于斯极也!’卒车裂族夷,为天下笑。斯人自杀,非人杀之也。”

      

          晁错第八


      大夫曰:“春秋之法,君亲无将,将而必诛。故臣罪莫重于弒君,子罪莫重于弒父。日者,淮南、衡山修文学,招四方游士,山东儒、墨咸聚于江、淮之间,讲议集论,著书数十篇。然卒于背义不臣,使谋叛逆,诛及宗族。晁错变法易常,不用制度,迫蹙宗室,侵削诸侯,蕃臣不附,骨肉不亲,吴、楚积怨,斩错东市,以慰三军之士而谢诸侯。斯亦谁杀之乎?”  

          文学曰:“孔子不饮盗泉之流,曾子不入胜母之闾。名且恶之,而况为不臣不子乎?是以孔子沐浴而朝,告之哀公。陈文子有马十乘,弃而违之。传曰:‘君子可贵可贱,可刑可杀,而不可使为乱。’若夫外饰其貌而内无其实,口诵其文而行不犹其道,是盗,固与盗而不容于君子之域。春秋不以寡犯众,诛绝之义有所止,不兼怨恶也。故舜之诛,诛鲧;其举,举禹。夫以玙璠之玼,而弃其璞,以一人之罪,而兼其众,则天下无美宝信士也。晁生言诸侯之地大,富则骄奢,急即合从。故因吴之过而削之会稽,因楚之罪而夺之东海,所以均轻重,分其权,而为万世虑也。弦高诞于秦而信于郑,晁生忠于汉而雠于诸侯。人臣各死其主,为其国用,此解杨之所以厚于晋而薄于荆也。”

      

          刺权第九


      大夫曰:“今夫越之具区,楚之云梦,宋之钜野,齐之孟诸,有国之富而霸王之资也。人君统而守之则强,不禁则亡。齐以其肠胃予人,家强而不制,枝大而折干,以专巨海之富而擅鱼盐之利也。势足以使众,恩足以恤下,是以齐国内倍而外附。权移于臣,政坠于家,公室卑而田宗强,转毂游海者盖三千乘,失之于本而末不可救。今山川海泽之原,非独云梦、孟诸也。鼓铸煮盐,其势必深居幽谷,而人民所罕至。奸猾交通山海之际,恐生大奸。乘利骄溢,散朴滋伪,则人之贵本者寡。大农盐铁丞咸阳、孔仅等上请:‘愿募民自给费,因县官器,煮盐予用,以杜浮伪之路。’由此观之:令意所禁微,有司之虑亦远矣。”

      文学曰:“有司之虑远,而权家之利近;令意所禁微,而僭奢之道着。自利害之设,三业之起,贵人之家,云行于涂,毂击于道,攘公法,申私利,跨山泽,擅官市,非特巨海鱼盐也;执国家之柄,以行海内,非特田常之势、陪臣之权也;威重于六卿,富累于陶、卫,舆服僭于王公,宫室溢于制度,幷兼列宅,隔绝闾巷,阁道错连,足以游观,凿池曲道,足以骋骛,临渊钓鱼,放犬走兔,隆豺鼎力,蹋鞠斗鸡,中山素女抚流征于堂上,鸣鼓巴俞作于堂下,妇女被罗纨,婢妾曳絺纻,子孙连车列骑,田猎出入,毕弋捷健。是以耕者释耒而不勤,百姓冰释而懈怠。何者?己为之而彼取之,僭侈相效,上升而不息,此百姓所以滋伪而罕归本也。”

      大夫曰:“官尊者禄厚,本美者枝茂。故文王德而子孙封,周公相而伯禽富。水广者鱼大,父尊者子贵。传曰:‘河、海润千里。’盛德及四海,况之妻子乎?故夫贵于朝,妻贵于室,富曰苟美,古之道也。孟子曰:‘王者与人同,而如彼者,居使然也。’居编户之列,而望卿相之子孙,是以跛夫之欲及楼季也,无钱而欲千金之宝,不亦虚望哉!”

      文学曰:“禹、稷自布衣,思天下有不得其所者,若己推而纳之沟中,故起而佐尧,平治水土,教民稼穑。其自任天下如此其重也,岂云食禄以养妻子而已乎?夫食万人之力者,蒙其忧,任其劳。一人失职,一官不治,皆公卿之累也。故君子之仕,行其义,非乐其势也。受禄以润贤,非私其利。见贤不隐,食禄不专,此公叔之所以为文,魏成子所以为贤也。故文王德成而后封子孙,天下不以为党,周公功成而后受封,天下不以为贪。今则不然。亲戚相推,朋党相举,父尊于位,子溢于内,夫贵于朝,妻谒行于外。无周公之德而有其富,无管仲之功而有其侈,故编户跛夫而望疾步也。”

      

          刺复第十


      大夫曰为色矜而心不怿,曰:“但居者不知负载之劳,从旁议者与当局者异忧。方今为天下腹居郡,诸侯并臻,中外未然,心憧憧若涉大川,遭风而未薄。是以夙夜思念国家之用,寝而忘寐,饥而忘食,计数不离于前,万事简阅于心。丞史器小,不足与谋,独郁大道,思睹文学,若俟周、邵而望高子。御史案事郡国,察廉举贤才,岁不乏也。今贤良、文学臻者六十余人,怀六艺之术,骋意极论,宜若开光发蒙;信往而乖于今,道古而不合于世务。意者不足以知士也?将多饰文诬能以乱实邪?何贤士之难睹也!自千乘倪宽以治尚书位冠九卿,及所闻睹选举之士,擢升赞宪甚显,然未见绝伦比,而为县官兴滞立功也。”

      文学曰:“输子之制材木也,正其规矩而凿枘调。师旷之谐五音也,正其六律而宫商调。当世之工匠,不能调其凿枘,则改规矩,不能协声音,则变旧律。是以凿枘刺戾而不合,声音泛越而不和。夫举规矩而知宜,吹律而知变,上也;因循而不作,以俟其人,次也。是以曹丞相日饮醇酒,倪大夫闭口不言。故治大者不可以烦,烦则乱;治小者不可以怠,怠则废。春秋曰:‘其政恢卓,恢卓可以为卿相。其政察察,察察可以为匹夫。’夫维纲不张,礼义不行,公卿之忧也。案上之文,期会之事,丞史之任也。尚书曰:‘俊乂在官,百僚师师,百工惟时,庶尹允谐。’言官得其人,人任其事,故官治而不乱,事起而不废,士守其职,大夫理其位,公卿总要执凡而已。故任能者责成而不劳,任己者事废而无功。桓公之于管仲,耳而目之。故君子劳于求贤,逸于用之,岂云殆哉?昔周公之相也,谦卑而不邻,以劳天下之士,是以俊又满朝,贤智充门。孔子无爵位,以布衣从才士七十有余人,皆诸侯卿相之人也,况处三公之尊以养天下之士哉?今以公卿之上位,爵禄之美,而不能致士,则未有进贤之道。尧之举舜也,宾而妻之。桓公举管仲也,宾而师之。以天子而妻匹夫,可谓亲贤矣。以诸侯而师匹夫,可谓敬宾矣。是以贤者从之若流,归之不疑。今当世在位者,既无燕昭之下士,鹿鸣之乐贀,而行臧文、子椒之意,蔽贤妒能,自高其智,訾人之才,足己而不问,卑士而不友,以位尚贤,以禄骄士,而求士之用,亦难矣!”大夫缪然不言,盖贤良长叹息焉。

      御史进曰:“太公相文、武以王天下,管仲相桓公以霸诸侯。故贤者得位,犹龙得水,腾蛇游雾也。公孙丞相以春秋说先帝,遽即三公,处周、邵之列,据万里之势,为天下准绳,衣不重彩,食不兼味,以先天下,而无益于治。博士褚泰、徐偃等,承明诏,建节驰传,巡省郡国,举孝、廉,劝元元,而流俗不改。招举贤良、方正、文学之士,超迁官爵,或至卿大夫,非燕昭之荐士,文王之广贤也?然而未睹功业所成。殆非龙蛇之才,而鹿鸣之所乐贤也。”

      文学曰:“冰炭不同器,日月不并明。当公孙弘之时,人主方设谋垂意于四夷,故权谲之谋进,荆、楚之士用,将帅或至封侯食邑,而勀获者咸蒙厚赏,是以奋击之士由此兴。其后,干戈不休,军旅相望,甲士糜弊,县官用不足,故设险兴利之臣起,磻溪熊罴之士隐。泾、渭造渠以通漕运,东郭咸阳、孔仅建盐、铁,策诸利,富者买爵贩官,免刑除罪,公用弥多而为者徇私,上下兼求,百姓不堪,抏弊而从法,故憯急之臣进,而见知、废格之法起。杜周、咸宣之属,以峻文决理贵,而王温舒之徒以鹰隼击杀显。其欲据仁义以道事君者寡,偷合取容者众。独以一公孙弘,如之何?”

      

          论儒第十一

      

          御史曰:“文学祖述仲尼,称诵其德,以为自古及今,未之有也。然孔子修道鲁、卫之间,教化洙、泗之上,弟子不为变,当世不为治,鲁国之削滋甚。齐宣王褒儒尊学,孟轲、淳于髡之徒,受上大夫之禄,不任职而论国事,盖齐稷下先生千有余人。当此之时,非一公孙弘也。弱燕攻齐,长驱至临淄,愍王遁逃,死于莒而不能救;王建禽于秦,与之俱虏而不能存。若此,儒者之安国尊君,未始有效也。”

      文学曰:“无鞭策,虽造父不能调驷马。无势位,虽舜、禹不能治万民。孔子曰:“凤鸟不至,河不出图,吾已矣夫!”故轺车良马,无以驰之;圣德仁义,无所施之。齐威、宣之时,显贤进士,国家富强,威行敌国。及愍王,奋二世之余烈,南举楚、淮,北幷巨宋,苞十二国,西摧三晋,却强秦,五国宾从,邹、鲁之君,泗上诸侯皆入臣。矜功不休,百姓不堪。诸儒谏不从,各分散,慎到、捷子亡去,田骈如薛,而孙卿适楚。内无良臣,故诸侯合谋而伐之。王建听流说,信反间,用后胜之计,不与诸侯从亲,以亡国。为秦所禽,不亦宜乎?”  

          御史曰:“伊尹以割烹事汤,百里以饭牛要穆公,始为苟合,信然与之霸王。如此,何言不从?何道不行?故商君以王道说孝公,不用,即以强国之道,卒以就功。邹子以儒术干世主,不用,即以变化始终之论,卒以显名。故马效千里,不必胡、代;士贵成功,不必文辞。孟轲守旧术,不知世务,故困于梁宋。孔子能方不能圆,故饥于黎丘。今晚世之儒勤德,时有乏匮,言以为非,困此不行。自周室以来,千有余岁,独有文,武、成、康,如言必参一焉,取所不能及而称之,犹躄者能言远不能行也。圣人异涂同归,或行或止,其趣一也。商君虽革法改教,志存于强国利民。邹子之作,变化之术,亦归于仁义。祭仲自贬损以行权,时也。故小枉大直,君子为之。今硁硁然守一道,引尾生之意,即晋文之谲诸侯以尊周室不足道,而管仲蒙耻辱以存亡不足称也。”

      文学曰:“伊尹之干汤,知圣主也。百里之归秦,知明君也。二君之能知霸主,其册素形于己,非暗而以冥冥决事也。孔子曰:‘名不正则言不顺,言不顺则事不成。’如何其苟合而以成霸王也?君子执德秉义而行,故造次必于是,颠沛必于是。孟子曰:‘居今之朝,不易其俗,而成千乘之势,不能一朝居也。’宁穷饥居于陋巷,安能变己而从俗化?阖庐杀僚,公子札去而之延陵,终身不入吴国。鲁公杀子赤,叔眄退而隐处,不食其禄。亏义得尊,枉道取容,效死不为也。闻正道不行,释事而退,未闻枉道以求容也。”

      御史曰:“论语:‘亲于其身为不善者,君子不入也。’有是言而行不足从也。季氏为无道,逐其君,夺其政,而冉求、仲由臣焉。礼:‘男女不授受,不交爵。’孔子适卫,因嬖臣弥子瑕以见卫夫人,子路不说。子瑕,佞臣也,夫子因之,非正也。男女不交,孔子见南子,非礼也。礼义由孔氏,且贬道以求容,恶在其释事而退也?”

      文学曰:“天下不平,庶国不宁,明王之忧也。上无天子,下无方伯,天下烦乱,贤圣之忧也。是以尧忧洪水,伊尹忧民,管仲束缚,孔子周流,忧百姓之祸而欲安其危也。是以负鼎俎、囚拘、匍匐以救之。故追亡者趋,拯溺者濡。今民陷沟壑,虽欲无濡,岂得已哉?”

      御史默不对。


      忧边第十二


          大夫曰:“文学言:‘天下不平,庶国不宁,明王之忧也。’故王者之于天下,犹一室之中也,有一人不得其所,则谓之不乐。故民流溺而弗救,非惠君也。国家有难而不忧,非忠臣也。夫守节死难者,人臣之职也;衣食饥寒者,慈父之道也。今子弟远劳于外,人主为之夙夜不宁,群臣尽力毕议,册滋国用。故少府丞令请建酒榷,以赡边,给战士,拯民于难也。为人父兄者,岂可以已乎!内省衣食以恤在外者,犹未足,今又欲罢诸用,减奉边之费,未可为慈父贤兄也。”

      文学曰:“周之季末,天子微弱,诸侯力政,故国君不安,谋臣奔驰。何者?敌国众而社稷危也。今九州同域,天下一统,陛下优游岩廊,览群臣极言至论,内咏雅、颂,外鸣和銮,纯德粲然,并于唐、虞,功烈流于子孙。夫蛮、貊之人,不食之地,何足以烦虑,而有战国之忧哉?若陛下不弃,加之以德,施之以惠,北夷必内向,款塞自至,然后以为胡制于外臣,即匈奴没齿不食其所用矣。”

      大夫曰:“圣主思中国之未宁,北边之未安,使故廷尉评等问人间所疾苦。拯恤贫贱,周赡不足。群臣所宣明王之德,安宇内者,未得其纪,故问诸生。诸生议不干天则入渊,乃欲以闾里之治,而况国家之大事,亦不几矣!发于畎亩,出于穷巷,不知冰水之寒,若醉而新寤,殊不足与言也。”

      文学曰:“夫欲安民富国之道,在于反本,本立而道生。顺天之理,因地之利,即不劳而功成。夫不修其源而事其流,无本以统之,虽竭精神,尽思虑,无益于治。欲安之适足以危之,欲救之适足以败之。夫治乱之端,在于本末而已,不至劳其心而道可得也。孔子曰:‘不通于论者难于言治,道不同者,不相与谋。’今公卿意有所倚,故文学之言,不可用也。”

      大夫曰:“吾闻为人臣者尽忠以顺职,为人子者致孝以承业。君有非,则臣覆盖之。父有非,则子匿逃之。故君薨,臣不变君之政,父没,则子不改父之道也。春秋讥毁泉台,为其隳先祖之所为,而扬君父之恶也。今盐、铁、均输,所从来久矣,而欲罢之,得无害先帝之功,而妨圣主之德乎?有司倚于忠孝之路,是道殊而不同于文学之谋也。”

      文学曰:“明者因时而变,知者随世而制。孔子曰:‘麻冕,礼也,今也纯,俭,吾从众。’故圣人上贤不离古,顺俗而不偏宜。鲁定公序昭穆,顺祖祢,昭公废卿士,以省事节用,不可谓变祖之所为,而改父之道也?二世充大阿房以崇绪,赵高增累秦法以广威,而未可谓忠臣孝子也。”


          园池第十三


      大夫曰:“诸侯以国为家,其忧在内。天子以八极为境,其虑在外。故宇小者用菲,功巨者用大。是以县官开园池,总山海,致利以助贡赋,修沟渠,立诸农,广田牧,盛苑囿。太仆、水衡、少府、大农,岁课诸入田牧之利,池之假,及北边置任田官,以赡诸用,而犹未足。今欲罢之,绝其源,杜其流,上下俱殚,困乏之应也,虽好省事节用,如之何其可也?”  

          文学曰:“古者,制地足以养民,民足以承其上。千乘之国,百里之地,公侯伯子男,各充其求赡其欲。秦兼万国之地,有四海之富,而意不赡,非宇小而用菲,嗜欲多而下不堪其求也。语曰:‘厨有腐肉,国有饥民,厩有肥马,路有餧人。’今狗马之养,虫兽之食,岂特腐肉肥马之费哉!无用之官,不急之作,服淫侈之变,无功而衣食县官者众,是以上不足而下困乏也。今不减除其本而欲赡其末,设机利,造田畜,与百姓争荐草,与商贾争市利,非所以明主德而相国家也。夫男耕女绩,天下之大业也。故古者分地而处之,制田亩而事之。是以业无不食之地,国无乏作之民。今县官之多张苑囿、公田、池泽,公家有鄣假之名,而利归权家。三辅迫近于山、河,地狭人众,四方并凑,粟米薪菜,不能相赡。公田转假,桑榆菜果不殖,地力不尽。愚以为非。先帝之开苑囿、池,可赋归之于民,县官租税而已。假税殊名,其实一也。夫如是,匹夫之力,尽于南亩,匹妇之力,尽于麻枲。田野辟,麻枲治,则上下俱衍,何困乏之有矣?”

      大夫默然,视其丞相、御史。


      轻重第十四  


          御史进曰:“昔太公封于营丘,辟草莱而居焉。地薄人少,于是通利末之道,极女工之巧。是以邻国交于齐,财畜货殖,世为强国。管仲相桓公,袭先君之业,行轻重之变,南服强楚而霸诸侯。今大夫君修太公、桓、管之术,总一盐、铁,通山川之利而万物殖。是以县官用饶足,民不困乏,本末并利,上下俱足,此筹计之所致,非独耕桑农也。”

      文学曰:“礼义者,国之基也,而权利者,政之残也。孔子曰:‘能以礼让为国乎?何有。’伊尹、太公以百里兴其君,管仲专于桓公,以千乘之齐,而不能至于王,其所务非也。故功名隳坏而道不济。当此之时,诸侯莫能以德,而争于公利,故以权相倾。今天下合为一家,利末恶欲行?淫巧恶欲施?大夫君以心计策国用,构诸侯,参以酒榷,咸阳、孔仅增以盐、铁,江充、杨可之等,各以锋锐,言利末之事析秋毫,可为无间矣。非特管仲设九府,徼山海也。然而国家衰耗,城郭空虚。故非特崇仁义无以化民,非力本农无以富邦也。”

      御史曰:“水有猏獭而池鱼劳,国有强御而齐民消。故茂林之下无丰草,大块之间无美苗。夫理国之道,除秽锄豪,然后百姓均平,各安其宇。张廷尉论定律令,明法以绳天下,诛奸猾,绝幷兼之徒,而强不凌弱,众不暴寡。大夫君运筹策,建国用,笼天下盐、铁诸利,以排富商大贾,买官赎罪,损有余,补不足,以齐黎民。是以兵革东西征伐,赋歛不增而用足。夫损益之事,贤者所睹,非众人之所知也。”

      文学曰:“扁鹊抚息脉而知疾所由生,阳气盛,则损之而调阴,寒气盛,则损之而调阳,是以气脉调和,而邪气无所留矣。夫拙医不知脉理之腠,血气之分,妄刺而无益于疾,伤肌肤而已矣。今欲损有余,补不足,富者愈富,贫者愈贫矣。严法任刑,欲以禁暴止奸,而奸犹不止,意者非扁鹊之用针石,故众人未得其职也。”  

          御史曰:“周之建国也,盖千八百诸侯。其后,强吞弱,大兼小,幷为六国。六国连兵结难数百年,内拒敌国,外攘四夷。由此观之:兵甲不休,战伐不乏,军旅外奉,仓库内实。今以天下之富,海内之财,百郡之贡,非特齐、楚之畜,赵、魏之库也。计委量入,虽急用之,宜无乏绝之时。顾大农等以术体躬稼,则后稷之烈,军四出而用不继,非天之财少也?用针石,调阴阳,均有无,补不足,亦非也?上大夫君与治粟都尉管领大农事,灸刺稽滞,开利百脉,是以万物流通,而县官富实。当此之时,四方征暴乱,车甲之费,克获之赏,以亿万计,皆赡大司农。此者扁鹊之力,而盐、铁之福也。”  

          文学曰:“边郡山居谷处,阴阳不和,寒冻裂地,冲风飘卤,沙石凝积,地势无所宜。中国,天地之中,阴阳之际也,日月经其南,斗极出其北,含众和之气,产育庶物。今去而侵边,多斥不毛寒苦之地,是犹弃江皋河滨,而田于岭阪菹泽也。转仓廪之委,飞府库之财,以给边民。中国困于繇赋,边民苦于戍御。力耕不便种籴,无桑麻之利,仰中国丝絮而后衣之,皮裘蒙毛,曾不足盖形,夏不失复,冬不离窟,父子夫妇内藏于专室土圜之中。中外空虚,扁鹊何力?而盐、铁何福也?”

      

          未通第十五


      御史曰:“内郡人众,水泉荐草,不能相赡,地势温湿,不宜牛马;民跖耒而耕,负檐而行,劳罢而寡功。是以百姓贫苦,而衣食不足,老弱负辂于路,而列卿大夫,或乘牛车。孝武皇帝平百越以为园圃,却羌、胡以为苑囿,是以珍怪异物,充于后宫,騊駼駃騠,实于外厩,匹夫莫不乘坚良,而民间厌橘柚。由此观之:边郡之利亦饶矣!而曰‘何福之有?’未通于计也。”  

          文学曰:“禹平水土,定九州,四方各以土地所生贡献,足以充宫室,供人主之欲,膏壤万里,山川之利,足以富百姓,不待蛮、貊之地,远方之物而用足。闻往者未伐胡、越之时,繇赋省而民富足,温衣饱食,藏新食陈,布帛充用,牛马成群。农夫以马耕载,而民莫不骑乘;当此之时,却走马以粪。其后,师旅数发,戎马不足,牸牝入阵,故驹犊生于战地。六畜不育于家,五谷不殖于野,民不足于糟糠,何橘柚之所厌?传曰:‘大军之后,累世不复。’方今郡国,田野有陇而不垦,城郭有宇而不实,边郡何饶之有乎?”

      御史曰:“古者,制田百步为亩,民井田而耕,什而籍一。义先公而后己,民臣之职也。先帝哀怜百姓之愁苦,衣食不足,制田二百四十步而一亩,率三十而税一。堕民不务田作,饥寒及己,固其理也。其不耕而欲播,不种而欲获,盐、铁又何过乎?”

      文学曰:“什一而籍,民之力也。丰耗美恶,与民共之。民勤,己不独衍;民衍,己不独勤。故曰:‘什一者,天下之中正也。’田虽三十,而以顷亩出税,乐岁粒米狼戾而寡取之,凶年饥馑而必求足。加之以口赋更繇之役,率一人之作,中分其功。农夫悉其所得,或假贷而益之。是以百姓疾耕力作,而饥寒遂及己也。筑城者先厚其基而后求其高,畜民者先厚其业而后求其赡。论语曰:‘百姓足,君孰与不足乎?’”  

          御史曰:“古者,诸侯争强,战国并起,甲兵不休,民旷于田畴,什一而籍,不违其职。今赖陛下神灵,甲兵不动久矣,然则民不齐出于南亩,以口率被垦田而不足,空仓廪而赈贫乏,侵益日甚,是以愈惰而仰利县官也。为斯君者亦病矣,反以身劳民;民犹背恩弃义而远流亡,避匿上公之事。民相仿效田地日芜,租赋不入,抵扞县官。君虽欲足,谁与之足乎?”

      文学曰:“树木数徙则萎,虫兽徙居则坏。故‘代马依北风,飞鸟翔故巢’,莫不哀其生。由此观之,民非利避上公之事而乐流亡也。往者,军阵数起,用度不足,以訾征赋,常取给见民,田家又被其劳,故不齐出于南亩也。大抵逋流,皆在大家,吏正畏惮,不敢笃责,刻急细民,细民不堪,流亡远去;中家为之绝出,后亡者为先亡者服事;录民数创于恶吏,故相仿效,去尤甚而就少愈者多。传曰:“政宽者民死之,政急者父子离。’是以田地日荒,城郭空虚。夫牧民之道,除其所疾,适其所安,安而不扰,使而不劳,是以百姓劝业而乐公赋。若此,则君无赈于民,民无利于上,上下相让而颂声作。故取而民不厌,役而民不苦。灵台之诗,非或使之,民自为之。若斯,则君何不足之有乎?”  

          御史曰:“古者,十五入大学,与小役;二十冠而成人,与戎;五十以上,血脉溢刚,曰艾壮。诗曰:‘方叔元老,克壮其猷。’故商师若乌,周师若荼。今陛下哀怜百姓,宽力役之政,二十三始傅,五十六而免,所以辅耆壮而息老艾也。丁者治其田里,老者修其唐园,俭力趣时,无饥寒之患。不治其家而讼县官,亦悖矣。”

      文学曰:“十九年已下为殇,未成人也;二十而冠;三十而娶,可以从戎事;五十已上曰艾老,杖于家,不从力役,所以扶不足而息高年也;乡饮酒之礼,耆老异馔,所以优耆耄而明养老也。故老者非肉不饱,非帛不暖,非杖不行。今五十已上至六十,与子孙服挽输,并给繇役,非养老之意也。古有大丧者,君三年不呼其门,通其孝道,遂其哀戚之心也。君子之所重而自尽者,其惟亲之丧乎!今或僵尸,弃衰绖而从戎事,非所以子百姓,顺孝悌之心也。周公抱成王听天下,恩塞海内,泽被四表,矧惟人面,含仁保德,靡不得其所。诗云:‘夙夜基命宥密。’陛下富于春秋,委任大臣,公卿辅政,政教未均,故庶人议也。”


          地广第十六


      大夫曰:“王者包含幷覆,普爱无私,不为近重施,不为远遗恩。今俱是民也,俱是臣也,安危劳佚不齐,独不当调邪?不念彼而独计此,斯亦好议矣?缘边之民,处寒苦之地,距强胡之难,烽燧一动,有没身之累。故边民百战,而中国恬卧者,以边郡为蔽扞也。诗云:‘莫非王事,而我独劳。’刺不均也。是以圣王怀四方独苦,兴师推却胡、越,远寇安灾,散中国肥饶之余,以调边境,边境强,则中国安,中国安则晏然无事。何求而不默也?”

      文学曰:“古者,天子之立于天下之中,县内方不过千里,诸侯列国,不及不食之地,禹贡至于五千里;民各供其君,诸侯各保其国,是以百姓均调,而繇役不劳也。今推胡、越数千里,道路回避,士卒劳罢。故边民有刎颈之祸,而中国有死亡之患,此百姓所以嚣嚣而不默也。夫治国之道,由中及外,自近者始。近者亲附,然后来远;百姓内足,然后恤外。故群臣论或欲田轮台,明主不许,以为先救近务及时本业也。故下诏曰:‘当今之务,在于禁苛暴,止擅赋,力本农。’公卿宜承意,请减除不任,以佐百姓之急。今中国弊落不忧,务在边境。意者地广而不耕,多种而不耨,费力而无功,诗云:‘无田甫田,维莠骄骄。’其斯之谓欤。”

      大夫曰:“汤、武之伐,非好用兵也;周宣王辟国千里,非贪侵也;所以除寇贼而安百姓也。故无功之师,君子不行;无用之地,圣王不贪。先帝举汤、武之师,定三垂之难,一面而制敌,匈奴遁逃,因河、山以为防,故去砂石咸卤不食之地,故割斗辟之县,弃造阳之地以与胡,省曲塞,据河险,守要害,以宽徭役,保士民。由此观之:圣主用心,非务广地以劳众而已矣。”

      文学曰:“秦之用兵,可谓极矣,蒙恬斥境,可谓远矣。今踰蒙恬之塞,立郡县寇虏之地,地弥远而民滋劳。朔方以西,长安以北,新郡之功,外城之费,不可胜计。非徒是也,司马、唐蒙凿西南夷之涂,巴、蜀弊于邛、筰;横海征南夷,楼船戍东越,荆、楚罢于瓯、骆;左将伐朝鲜,开临屯,燕、齐困于秽貉,张骞通殊远,纳无用,府库之藏,流于外国;非特斗辟之费,造阳之役也。由此观之:非人主用心,好事之臣为县官计过也。”

      大夫曰:“挟管仲之智者,非为厮役之使也。怀陶朱之虑者,不居贫困之处。文学能言而不能行,居下而讪上,处贫而非富,大言而不从,高厉而行卑,诽誉訾议,以要名采善于当世。夫禄不过秉握者,不足以言治,家不满檐石者,不足以计事。儒皆贫羸,衣冠不完,安知国家之政,县官之事乎?何斗辟造阳也!”

      文学曰:“夫贱不害智,贫不妨行。颜渊屡空,不为不贤。孔子不容,不为不圣。必将以貌举人,以才进士,则太公终身鼓刀,宁戚不离饭牛矣。古之君子,守道以立名,修身以俟时,不为穷变节,不为贱易志,惟仁之处,惟义之行。临财苟得,见利反义,不义而富,无名而贵,仁者不为也。故曾参、闵子,不以其仁易晋、楚之富。伯夷不以其行易诸侯之位,是以齐景公有马千驷,而不能与之争名。孔子曰:‘贤哉回也!一箪食,一瓢饮,在于陋巷,人不堪其忧,回也不改其乐。’故惟仁者能处约、乐,小人富斯暴,贫斯滥矣。杨子曰:‘为仁不富,为富不仁。’苟先利而后义,取夺不厌。公卿积亿万,大夫积千金,士积百金,利己幷财以聚;百姓寒苦,流离于路,儒独何以完其衣冠也?”

      

          贫富第十七

      

          大夫曰:“余结发束修年十三,幸得宿卫,给事辇毂之下,以至卿大夫之位,获禄受赐,六十有余年矣。车马衣服之用,妻子仆养之费,量入为出,俭节以居之,奉禄赏赐,一二筹策之,积浸以致富成业。故分土若一,贤者能守之;分财若一,智者能筹之。夫白圭之废着,子贡之三至千金,岂必赖之民哉?运之六寸,转之息耗,取之贵贱之间耳!”

      文学曰:“古者,事业不二,利禄不兼,然诸业不相远,而贫富不相悬也。夫乘爵禄以谦让者,名不可胜举也;因权势以求利者,入不可胜数也。食湖池,管山海,刍荛者不能与之争泽,商贾不能与之争利。子贡以布衣致之,而孔子非之,况以势位求之者乎?故古者大夫思其仁义以充其位,不为权利以充其私也。”

      大夫曰:“山岳有饶,然后百姓赡焉。河、海有润,然后民取足焉。夫寻常之污,不能溉陂泽,丘阜之木,不能成宫室。小不能苞大,少不能赡多。未有不能自足而能足人者也。未有不能自治而能治人者也。故善为人者,能自为者也,善治人者,能自治者也。文学不能治内,安能理外乎?”

      文学曰:“行远道者假于车,济江、海者因于舟。故贤士之立功成名,因于资而假物者也。公输子能因人主之材木,以构宫室台榭,而不能自为专屋狭庐,材不足也。欧冶能因国君之铜铁,以为金炉大钟,而不能自为壶鼎盘杅,无其用也。君子能因人主之正朝,以和百姓,润众庶,而不能自饶其家,势不便也。故舜耕历山,恩不及州里,太公屠牛于朝歌,利不及妻子,及其见用,恩流八荒,德溢四海。故舜假之尧,太公因之周,君子能修身以假道者,不能枉道而假财也。”

      大夫曰:“道悬于天,物布于地,智者以衍,愚者以困。子贡以着积显于诸侯、陶朱公以货殖尊于当世。富者交焉,贫者赡焉。故上自人君,下及布衣之士,莫不戴其德,称其仁。原宪、孔急,当世被饥寒之患,颜回屡空于穷巷,当此之时,迫于窟穴,拘于缊袍,虽欲假财信奸佞,亦不能也。”

      文学曰:“孔子云:‘富而可求,虽执鞭之事,吾亦为之;如不可求,从吾所好。’君子求义,非苟富也。故刺子贡不受命而货殖焉。君子遭时则富且贵,不遇,退而乐道。不以利累己,故不违义而妄取。隐居修节,不欲妨行,故不毁名而趋势。虽付之以韩、魏之家,非其志,则不居也。富贵不能荣,谤毁不能伤也。故原宪之缊袍,贤于季孙之狐貉,赵宣孟之鱼飧,甘于智伯之刍豢,子思之银佩,美于虞公之垂棘。魏文侯轼段干木之闾,非以其有势也;晋文公见韩庆,下车而趋,非以其多财,以其富于仁,充于德也。故贵何必财,亦仁义而已矣!”  


          毁学第十八


      大夫曰:“夫怀枉而言正,自托于无欲而实不从,此非士之情也?昔李斯与包丘子俱事荀卿,既而李斯入秦,遂取三公,据万乘之权以制海内,切侔伊、望,名巨泰山;而包丘子不免于瓮牖蒿庐,如潦岁之蛙,口非不众也,卒死于沟壑而已。今内无以养,外无以称,贫贱而好义,虽言仁义,亦不足贵者也!”

      文学曰:“方李斯之相秦也,始皇任之,人臣无二,然而荀卿谓之不食,睹其罹不测之祸也。包丘子饭麻蓬藜,修道白屋之下,乐其志,安之于广厦刍豢,无赫赫之势,亦无戚戚之忧。夫晋献垂棘,非不美也,宫之奇见之而叹,知荀息之图之也。智伯富有三晋,非不盛也,然不知襄子之谋之也。季孙之狐貉,非不丽也,而不知鲁君之患之也。故晋献以宝马钓虞、虢,襄子以城坏诱智伯。故智伯身禽于赵,而虞、虢卒幷于晋,以其务得不顾其后,贪土地而利宝马也。孔子曰:‘人无远虑,必有近忧。’今之在位者,见利不虞害,贪得不顾耻,以利易身,以财易死。无仁义之德,而有富贵之禄,若蹈坎阱,食于悬门之下,此李斯之所以伏五刑也。南方有鸟名鹓鶵,非竹实不食,非醴泉不饮,飞过泰山,泰山之鸱,俛啄腐鼠,仰见鹓雏而吓。今公卿以其富贵笑儒者为之常行,得无若泰山鸱吓鹓鶵乎?”

      大夫曰:“学者所防固辞,礼者所以文鄙行也。故学以辅德,礼以文质。言思可道,行思可乐。恶言不出于口,邪行不及于己。动作应礼,从容中道。故礼以行之,孙以出之。是以终日言,无口过;终身行,无冤尤。今人主张官立朝以治民,疏爵分禄以褒贤,而曰‘悬门腐鼠’,何辞之鄙背而悖于所闻也?”

      文学曰:“圣主设官以授任,能者处之;分禄以任贤,能者受之。义贵无高,义取无多。故舜受尧之天下,太公不避周之三公;苟非其人,箪食豆羹犹为赖民也。故德薄而位高,力少而任重,鲜不及矣。夫泰山鸱啄腐鼠于穷泽幽谷之中,非有害于人也。今之有司,盗主财而食之于刑法之旁,不知机之是发,又以吓人,其患恶得若泰山之鸱乎?”

      大夫曰:“司马子言:‘天下穰穰,皆为利往。’赵女不择丑好,郑妪不择远近,商人不媿耻辱,戎士不爱死力,士不在亲,事君不避其难,皆为利禄也。儒、墨内贪外矜,往来游说,栖栖然亦未为得也。故尊荣者士之愿也,富贵者士之期也。方李斯在荀卿之门,阘茸与之齐轸,及其奋翼高举,龙升骥骛,过九轶二,翱翔万仞,鸿鹄华骝且同侣,况跛牂燕雀之属乎!席天下之权,御宇内之众,后车百乘,食禄万钟。而拘儒布褐不完,糟糠不饱,非甘菽藿而卑广厦,亦不能得已。虽欲吓人,其何已乎!”

      文学曰:“君子怀德,小人怀土。贤士徇名,贪夫死利。李斯贪其所欲,致其所恶。孙叔敖早见于未萌,三去相而不悔,非乐卑贱而恶重禄也,虑患远而避害谨也。夫郊祭之牛,养食年,衣之文绣,以入庙堂,太宰执其鸾刀,以启其毛;方此之时,愿任重而上峻阪,不可得也。商鞅困于彭池,吴起之伏王尸,愿被布褐而处穷鄙之蒿庐,不可得也。李斯相秦,席天下之势,志小万乘;及其囚于囹圄,车裂于云阳之市,亦愿负薪入东门,行上蔡曲街径,不可得也。苏秦、吴起以权势自杀,商鞅、李斯以尊重自灭,皆贪禄慕荣以没其身,从车百乘,曾不足以载其祸也!”


      褒贤第十九


      大夫曰:“伯夷以廉饥,尾生以信死。由小器而亏大体,匹夫匹妇之为谅也,经于沟渎而莫之知也。何功名之有?苏秦、张仪,智足以强国,勇足以威敌,一怒而诸侯惧,安居而天下息。万乘之主,莫不屈体卑辞,重币请交,此所谓天下名士也。夫智不足与谋,而权不能举当世,民斯为下也。今举亡而为有,虚而为盈,布衣穿履,深念徐行,若有遗亡,非立功名之士,而亦未免于世俗也。”

      文学曰:“苏秦以从显于赵,张仪以横任于秦,方此之时,非不尊贵也,然智士随而忧之,知夫不以道进者必不以道退,不以义得者必不以义亡。季、孟之权,三桓之富,不可及也,孔子为之曰‘微’。为人臣,权均于君,富侔于国者,亡。故其位弥高而罪弥重,禄滋厚而罪滋多。夫行者先全己而后求名,仕者先辟害而后求禄。故香饵非不美也,龟龙闻而深藏,鸾凤见而高逝者,知其害身也。夫为乌鹊鱼鳖,食香饵而后狂飞奔走,逊头屈遰,无益于死。今有司盗秉国法,进不顾罪,卒然有急,然后车驰入趋,无益于死。所盗不足偿于臧获,妻子奔亡无处所,身在深牢,莫知恤视。方此之时,何暇得以笑乎?”

      大夫曰:“文学高行,矫然若不可卷;盛节絜言,皦然若不可涅。然戍卒陈胜释挽辂,首为叛逆,自立张楚,素非有回、由处士之行,宰相列臣之位也。奋于大泽,不过旬月,而齐、鲁儒墨缙绅之徒,肆其长衣,─长衣,容衣也。─负孔氏之礼器诗、书,委质为臣。孔甲为涉博士,卒俱死陈,为天下大笑。深藏高逝者固若是也?”

      文学曰:“周室衰,礼乐坏,不能统理,天下诸侯交争,相灭亡,幷为六国,兵革不休,民不得宁息。秦以虎狼之心,蚕食诸侯,幷吞战国以为郡县,伐能矜功,自以为过尧、舜而羞与之同。弃仁义而尚刑罚,以为今时不师于文而决于武。赵高治狱于内,蒙恬用兵于外,百姓愁苦,同心而患秦。陈王赫然奋爪牙为天下首事,道虽凶而儒墨或干之者,以为无王之矣,道拥遏不得行,自孔子以至于兹,而秦复重禁之,故发愤于陈王也。孔子曰:‘如有用我者,吾其为东周乎!’庶几成汤、文、武之功,为百姓除残去贼,岂贪禄乐位哉?”

      大夫曰:“文学言行虽有伯夷之廉,不及柳下惠之贞,不过高瞻下视,絜言污行,觞酒豆肉,迁延相让,辞小取大,鸡廉狼吞。赵绾、王臧之等,以儒术擢为上卿,而有奸利残忍之心。主父偃以口舌取大官,窃权重,欺绐宗室,受诸侯之赂,卒皆诛死。东方朔自称辩略,消坚释石,当世无双;然省其私行,狂夫不忍为,况无东方朔之口,其余无可观者也?”

      文学曰:“志善者忘恶,谨小者致大。俎豆之间足以观礼,闺门之内足以论行。夫服古之服,诵古之道,舍此而为非者,鲜矣。故君子时然后言,义然后取,不以道得之不居也。满而不溢,泰而不骄。故袁盎亲于景帝,秣马不过一驷;公孙弘即三公之位,家不过十乘;东方先生说听言行于武帝,而不骄溢;主父见困厄之日久矣,疾在位者不好道而富且贵,莫知恤士也,于是取饶衍之余以周穷士之急,非为私家之业也。当世嚣嚣,非患儒之鸡廉,患在位者之虎饱鸱咽,于求览无所孑遗耳。”


          相刺第二十


      大夫曰:“古者,经井田,制廛里,丈夫治其田畴,女子治其麻枲,无旷地,无游人。故非商工不得食于利末,非良农不得食于收获,非执政不得食于官爵。今儒者释耒耜而学不验之语,旷日弥久,而无益于治,往来浮游,不耕而食,不蚕而衣,巧伪良民,以夺农妨政,此亦当世之所患也。”  

          文学曰:“禹戚洪水,身亲其劳,泽行路宿,过门不入。当此之时,簪堕不掇,冠挂不顾,而暇耕乎?孔子曰:‘诗人疾之不能默,丘疾之不能伏。’是以东西南北七十说而不用丙,然后退而修王道,作春秋,垂之万载之后,天下折中焉,岂与匹夫匹妇耕织同哉!传曰:‘君子当时不动,而民无观也。’故非君子莫治小人,非小人无以养君子,不当耕织为匹夫匹妇也。君子耕而不学,则乱之道也。”

      大夫曰:“文学言治尚于唐、虞,言义高于秋天,有华言矣,未见其实也。昔鲁穆公之时,公仪为相,子思、子柳为之卿,然北削于齐,以泗为境,南畏楚人,西宾秦国。孟轲居梁,兵折于齐,上将军死,而太子虏,西败于秦,地夺壤削,亡河内、河外。夫仲尼之门,七十子之徒,去父母,捐室家,负荷而随孔子,不耕而学,乱乃愈滋。故玉屑满箧,不为有宝;诗书负笈,不为有道。要在安国家,利人民,不苟繁文众辞而已。”

      文学曰:“虞不用百里奚之谋而灭,秦穆用之以至霸焉。夫不用贤则亡,而不削何可得乎?孟子适梁,惠王问利,答以仁义。趣舍不合,是以不用而去,怀宝而无语。故有粟不食,无益于饥;睹贤不用,无益于削。纣之时,内有微、箕二子,外有胶鬲、棘子,故其不能存。夫言而不用,谏而不听,虽贤,恶得有益于治也?”  

          大夫曰:“橘柚生于江南,而民皆甘之于口,味同也;好音生于郑、卫,而人皆乐之于耳,声同也。越人子臧、戎人由余,待译而后通,而并显齐、秦,人之心于善恶同也。故曾子倚山而吟,山鸟下翔;师旷鼓琴,百兽率舞。未有善而不合,诚而不应者也。意未诚与?何故言而不见从,行而不合也?”

      文学曰:“扁鹊不能治不受针药之疾,贤圣不能正不食谏诤之君。故桀有关龙逄而夏亡,纣有三仁而商灭,故不患无由余、子臧之论,患无穆、威之听耳。是以孔子东西无所遇,屈原放逐于楚国也。故曰:‘直道而事人,焉往而不三黜?枉道而事人,何必去父母之邦。’此所以言而不见从,行而不得合者也。”

      大夫曰:“歌者不期于利声,而贵在中节;论者不期于丽辞,而务在事实。善声而不知转,未可为能歌也;善言而不知变,未可谓能说也。持规而非矩,执准而非绳,通一孔,晓一理,而不知权衡,以所不睹不信人,若蝉之不知雪,坚据古文以应当世,犹辰参之错,胶柱而调瑟,固而难合矣。孔子所以不用于世,而孟轲见贱于诸侯也。”

      文学曰:“日月之光,而盲者不能见,雷电之声,而聋人不能闻。夫为不知音者言,若语于瘖聋,何特蝉之不知重雪耶?夫以伊尹之智,太公之贤,而不能开辞于桀、纣,非说者非,听者过也。是以荆和抱璞而泣血,曰:‘安得良工而剖之!’屈原行吟泽畔,曰:‘安得皋陶而察之!’夫人君莫不欲求贤以自辅,任能以治国,然牵于流说,惑于道谀,是以贤圣蔽掩,而谗佞用事,以此亡国破家,而贤士饥于岩穴也。昔赵高无过人之志,而居万人之位,是以倾覆秦国而祸殃其宗,尽失其瑟,何胶柱之调也?”  

          大夫曰:“所谓文学高第者,智略能明先王之术,而姿质足以履行其道。故居则为人师,用则为世法。今文学言治则称尧、舜,道行则言孔、墨,授之政则不达,怀古道而不能行,言直而行枉,道是而情非,衣冠有以殊于乡曲,而实无以异于凡人。诸生所谓中直者,遭时蒙幸,备数适然耳,殆非明举所谓,固未可与论治也。”  

          文学曰:“天设三光以照记,天子立公卿以明治。故曰:公卿者,四海之表仪,神化之丹青也。上有辅明主之任,下有遂圣化之事,和阴阳,调四时,安众庶,育群生,使百姓辑睦,无怨思之色,四夷顺德,无叛逆之忧,此公卿之职,而贤者之所务也。若伊尹、周、召三公之才,太颠、闳夭九卿之人。文学不中圣主之明举,今之执政,亦未能称盛德也。”

      大夫不说,作色不应也。

      文学曰:“朝无忠臣者政闇,大夫无直士者位危。任座正言君之过,文侯改言行,称为贤君。袁盎面刺绛侯之骄矜,卒得其庆。故触死亡以干主之过者,忠臣也,犯颜以匡公卿之失者,直士也。鄙人不能巷言面违。方今入谷之教令,张而不施,食禄多非其人,以妨农商工,市井之利,未归于民,民望不塞也。且夫帝王之道,多堕坏而不修,诗云:‘济济多士。’意者诚任用其计,非苟陈虚言而已。”  


          殊路第二十一


      大夫曰:“七十子躬受圣人之术,有名列于孔子之门,皆诸侯卿相之才,可南面者数人云。政事者冉有、季路,言语宰我、子贡。宰我秉事,有宠于齐,田常作难,道不行,身死庭中,简公杀于檀台。子路仕卫,孔悝作乱,不能救君出亡,身菹于卫;子贡、子皋遁逃,不能死其难。食人之重禄不能更,处人尊官不能存,何其厚于己而薄于君哉?同门共业,自以为知古今之义,明君臣之礼。或死或亡,二三子殊路,何道之悖也!”

      文学曰:“宋殇公知孔父之贤而不早任,故身死。鲁庄知季有之贤,授之政晚而国乱。卫君近佞远贤,子路居蒲,孔悝为政。简公不听宰我而漏其谋。是以二君身被放杀,而祸及忠臣。二子者有事而不与其谋,故可以死,可以生,去止其义一也。晏婴不死崔、庆之难,不可谓不义;微子去殷之乱,可谓不仁乎?”  

          大夫曰:“至美素璞,物莫能饰也。至贤保真,伪文莫能增也。故金玉不琢,美珠不画。今仲由、冉求无檀柘之材,隋、和之璞,而强文之,譬若雕朽木而砺鈆刀,饰嫫母画土人也。被以五色,斐然成章,及遭行潦流波,则沮矣。夫重怀古道,枕籍诗、书,危不能安,乱不能治,邮里逐鸡,鸡亦无党也?”

      文学曰:“非学无以治身,非礼无以辅德。和氏之璞,天下之美宝也、待礛诸之工而后明。毛嫱,天下之姣人也,待香泽脂粉而后容。周公,天下之至圣人也,待贤师学问而后通。今齐世庸士之人,不好学问,专以己之愚而荷负巨任,若无橶舳,济江海而遭大风,漂没于百仞之渊,东流无崖之川,安得沮而止乎?”  

          大夫曰:“性有刚柔,形有好恶,圣人能因而不能改。孔子外变二三子之服,而不能革其心。故子路解长剑,去危冠,屈节于夫子之门,然摄齐师友,行行尔,鄙心犹存。宰予昼寝,欲损三年之丧。孔子曰:‘粪土之墙,不可杇也’,‘若由不得其死、然。’故内无其质而外学其文,虽有贤师良友,若画脂镂冰,费日损功。故良师不能饰戚施,香泽不能化嫫母也。”

      文学曰:“西子蒙以不洁,鄙夫掩鼻;恶人盛饰,可以宗祀上帝。使二人不涉圣人之门,不免为穷夫,安得卿大夫之名?故砥所以致于刃,学所以尽其才也。孔子曰:‘觚不觚,觚哉,觚哉!’故人事加则为宗庙器,否则斯养之爨材。干、越之铤不厉,匹夫贱之;工人施巧,人主服而朝也。夫丑者自以为姣,故饰;愚者自以为知,故不学。观笑在己而不自知,不好用人,自是之过也。”


      讼贤第二十二


      大夫曰:“刚者折,柔者卷。故季由以强梁死,宰我以柔弱杀。使二子不学,未必不得其死。何者?矜己而伐能,小知而巨牧,欲人之从己,不能以己从人,莫视而自见,莫贾而自贵,此其所以身杀死而终菹醢也。未见其为宗庙器,睹其为世戮也。当此之时,东流亦安之乎?”  

          文学曰:“骐骥之挽盐车垂头于太行之阪,屠者持刀而睨之。太公之穷困,负贩于朝歌也,蓬头相聚而笑之。当此之时,非无远筋骏才也,非文王、伯乐莫知之贾也。子路、宰我生不逢伯乐之举,而遇狂屠,故君子伤之,若“由不得其死然”,‘天其祝予’矣。孔父累华督之难,不可谓不义。仇牧涉宋万之祸,不可谓不贤也。”  

          大夫曰:“今之学者,无太公之能,骐骥之才,有以蜂虿介毒而自害也。东海成颙,河东胡建是也。二子者以术蒙举,起卒伍,为县令。独非自是,无与合同。引之不来,推之不往,狂狷不逊,忮害不恭,刻轹公主,侵陵大臣。知其不可,而强行之,欲以干名。所由不轨,果没其身。未睹功业所至,而见东观之殃,身得重罪,不得以寿终。狡而以为知,讦而以为直,不逊以为勇,其遭难,故亦宜也。”

      文学曰:“二公怀精白之心,行忠正之道,直己以事上,竭力以徇公,奉法推理,不避强御,不阿所亲,不贵妻子之养,不顾私家之业。然卒不能免于嫉妒之人,为众枉所排也。其所以累不测之刑而功不遂也。夫公族不正则法令不行,肱肱不正则奸邪兴起。赵奢行之平原,范雎行之穰侯,二国治而两家全。故君过而臣正,上非而下讥,大臣正,县令何有?不反诸己而行非于人,执政之大失也。夫屈原之沉渊,遭子椒之谮也;管子得行其道,鲍叔之力也。今不睹鲍叔之力,而见汨罗之祸,虽欲以寿终,无其能得乎?”


      遵道第二十三


      大夫曰:“御史!”

      御史未应。谓丞相史曰:“文学结发学语,服膺不舍,辞若循环,转若陶钧。文繁如春华,无效如抱风。饰虚言以乱实,道古以害今。从之,则县官用废,虚言不可实而行之;不从,文学以为非也,众口嚣嚣,不可胜听。诸卿都大府日久矣,通先古,明当世,今将何从而可矣?”

      丞相史进曰:“晋文公谲而不正,齐桓公正而不谲,所由不同,俱归于霸。而必随古不革,袭故不改,是文质不变,而椎车尚在也。故或作之,或述之,然后法令调于民,而器械便于用也。孔对三君殊意,晏子相三君异道,非苟相反,所务之时异也。公卿既定大业之路,建不竭之本,愿无顾细故之语,牵儒、墨论也。”

      文学曰:“师旷之调五音,不失宫商。圣王之治世,不离仁义。故有改制之名,无变道之实。上自黄帝,下及三王,莫不明德教,谨庠序,崇仁义,立教化。此百世不易之道也。殷、周因循而昌,秦王变法而亡。诗云:‘虽无老成人,尚有典刑。’言法教也。故没而存之,举而贯之,贯而行之,何更为哉?”

      丞相史曰:“说西施之美无益于容,道尧、舜之德无益于治。今文学不言所为治,而言以治之无功,犹不言耕田之方,美富人之囷仓也。夫欲粟者务时,欲治者因世。故商君昭然独见存亡不可与世俗同者,为其沮功而多近也。庸人安其故,而愚者果所闻。故舟车之治,使民三年而后安之。商君之法立,然后民信之。孔子曰:‘可与共学,未可与权。’文学可令扶绳循刻,非所与论道术之外也。”

      文学曰:“君子多闻阙疑,述而不作,圣达而谋大,叡智而事寡。是以功成而不隳,名立而不顿。小人智浅而谋大,羸弱而任重,故中道而废,苏秦、商鞅是也。无先王之法,非圣人之道,而因于己,故亡。易曰:‘小人处盛位,虽高必崩。不盈其道,不恒其德,而能以善终身,未之有也。是以初登于天,后入于地。’禹之治水也,民知其利,莫不劝其功。商鞅之立法,民知其害,莫不畏其刑。故夏后功立而王,商鞅法行而亡。商鞅有独智之虑,世乏独见之证。文学不足与权当世,亦无负累蒙殃也。”


      论诽第二十四


          丞相史曰:“晏子有言:‘儒者华于言而寡于实,繁于乐而舒于民,久丧以害生,厚葬以伤业,礼烦而难行,道迂而难遵,称往古而訾当世,贱所见而贵所闻。’此人本枉,以己为式。此颜异所以诛黜,而狄山死于匈奴也。处其位而非其朝,生乎世而讪其上,终以被戮而丧其躯,此独谁为负其累而蒙其殃乎?”

      文学曰:“礼所以防淫,乐所以移风,礼兴乐正则刑罚中。故堤防成而民无水菑,礼义立而民无乱患。故礼义坏,堤防决,所以治者,未之有也。孔子曰:‘礼与其奢也宁俭,丧与其易也宁戚。’故礼之所为作,非以害生伤业也,威仪节文,非以乱化伤俗也。治国谨其礼,危国谨其法。昔秦以武力吞天下,而斯、高以妖孽累其祸,废古术,隳旧礼,专任刑法,而儒、墨既丧焉。塞士之涂,壅人之口,道谀日进而上不闻其过,此秦所以失天下而殒社稷也。故圣人为政,必先诛之,伪巧言以辅非而倾覆国家也。今子安取亡国之语而来乎?夫公卿处其位,不正其道,而以意阿邑顺风,疾小人浅浅面从,以成人之过也。故知言之死,不忍从苟合之徒,是以不免于螺绁。悲夫!”

      丞相史曰:“檀柘而有乡,萑苇而有藂,言物类之相从也。孔子曰:‘德不孤,必有邻。’故汤兴而伊尹至,不仁者远矣。未有明君在上而乱臣在下也。今先帝躬行仁圣之道,以临海内,招举俊才贤良之士,唯仁是用,诛逐乱臣,不避所亲,务以求贤而简退不肖,犹尧之举舜、禹之族,殛鲧放驩兜也。而曰‘苟合之徒’,是则主非而臣阿,是也?”

      文学曰:“皋陶对舜:‘在知人,惟帝其难之。’洪水之灾,尧独愁悴而不能治,得舜、禹而九州宁。故虽有尧明之君,而无舜、禹之佐,则纯德不流。春秋刺有君而无主。先帝之时,良臣未备,故邪臣得间。尧得舜、禹而鲧殛驩兜诛,赵简子得叔向而盛青肩诎。语曰:‘未见君子,不知伪臣。’诗云:‘未见君子,忧心忡忡。既见君子,我心则降。’此之谓也。”

      丞相史曰:“尧任鲧、驩兜,得舜、禹而放殛之以其罪,而天下咸服,诛不仁也。人君用之齐民,而颜异,济南亭长也,先帝举而加之高位,官至上卿。狄山起布衣,为汉议臣,处舜、禹之位,执天下之中,不能以治,而反坐讪上;故驩兜之诛加而刑戮至焉。贤者受赏而不肖者被刑,固其然也。文学又何怪焉?”

      文学曰:“论者相扶以义,相喻以道,从善不求胜,服义不耻穷。若相迷以伪,相乱以辞,相矜于后息,期于苟胜,非其贵者也。夫苏秦、张仪,荧惑诸侯,倾覆万乘,使人失其所恃;非不辩,然乱之道也。君子疾鄙夫之不可与事君,患其听从而无所不至也。今子不听正义以辅卿相,又从而顺之,好须臾之说,不计其后。若子之为人吏,宜受上戮,子姑默矣!”

      丞相史曰:“盖闻士之居世也,衣服足以胜身,食饮足以供亲,内足以相恤,外不求于人。故身修然后可以理家,家理然后可以治官。故饭蔬粝者不可以言孝,妻子饥寒者不可以言慈,绪业不修者不可以言理。居斯世,行斯身,而有此三累者,斯亦足以默矣。”


      孝养第二十五


          文学曰:“善养者不必刍豢也,善供服者不必锦绣也。以己之所有尽事其亲,孝之至也。故匹夫勤劳,犹足以顺礼,歠菽饮水,足以致其敬。孔子曰:‘今之孝者,是为能养,不敬,何以别乎?’故上孝养志,其次养色,其次养体。贵其礼,不贪其养,礼顺心和,养虽不备,可也。易曰:‘东邻杀牛,不如西邻之禴祭也。’故富贵而无礼,不如贫贱之孝悌。闺门之内尽孝焉,闺门之外尽悌焉,朋友之道尽信焉,三者,孝之至也。居家理者,非谓积财也,事亲孝者,非谓鲜肴也,亦和颜色、承意尽礼义而已矣。”

      丞相史曰:“八十曰耋,七十曰耄。耄,食非肉不饱,衣非帛不暖。故孝子曰甘毳以养口,轻暖以养体。曾子养曾皙,必有酒肉。无端絻,虽公西赤不能以为容。无肴膳,虽闵、曾不能以卒养。礼无虚加,故必有其实然后为之文。与其礼有余而养不足,宁养有余而礼不足。夫洗爵以盛水,升降而进粝,礼虽备,然非其贵者也。”

      文学曰:“周襄王之母非无酒肉也,衣食非不如曾皙也,然而被不孝之名,以其不能事其父母也。君子重其礼,小人贪其养。夫嗟来而招之,投而与之,乞者由不取也。君子苟无其礼,虽美不食焉。故礼主人不亲馈,则客不祭。是馈轻而礼重也。”

      丞相史曰:“孝莫大以天下一国养,次禄养,下以力。故王公人君,上也,卿大夫,次也。夫以家人言之,有贤子当路于世者,高堂邃宇,安车大马,衣轻暖,食甘毳。无者,褐衣皮冠,穷居陋巷,有旦无暮,食蔬粝荤茹,膢腊而后见肉。老亲之腹非唐园,唯菜是盛。夫蔬粝,乞者所不取,而子以养亲,虽欲以礼,非其贵也。”

      文学曰:“无其能而窃其位,无其功而有其禄,虽有富贵,由跖、蹻之养也。高台极望,食案方丈,而不可谓孝。老亲之腹非盗囊也,何故常盛不道之物?夫取非有非职,财入而患从之,身且死祸殃,安得膢腊而食肉?曾参、闵子无卿相之养,而有孝子之名;周襄王富有天下,而有不能事父母之累。故礼菲而养丰,非孝也。掠囷而以养,非孝也。”  

          丞相史曰:“上孝养色,其次安亲,其次全身。往者,陈余背汉,斩于泜水;五被邪逆,而夷三族。近世,主父偃行不轨而诛灭,吕步舒弄口而见戮,行身不谨,诛及无罪之亲。由此观之:虚礼无益于己也。文实配行,礼养俱施,然后可以言孝。孝在实质,不在于饰貌;全身在于谨慎,不在于驰语也。”

      文学曰:“言而不诚,期而不信,临难不勇,事君不忠,不孝之大者也。孟子曰:‘今之世,今之大夫,皆罪人也。皆逢其意以顺其恶。’今子不忠不信,巧言以乱政,导谀以求合。若此者,不容于世。春秋曰:‘士守一不移,循理不外援,共其职而已。’故卑位而言高者,罪也,言不及而言者,傲也。有诏公卿与斯议,而空战口也?”

      

          刺议第二十六


      丞相史曰:“山陵不让椒跬,以成其崇;君子不辞负薪之言,以广其名。故多见者博,多闻者知,距谏者塞,专己者孤。故谋及下者无失策,举及众者无顿功。诗云:‘询于刍荛。’故布衣皆得风议,何况公卿之史乎?春秋士不载文,而书咺者,以为宰士也。孔子曰:‘虽不吾以,吾其与闻诸。’仆虽不敏,亦尝倾耳下风,摄齐句指,受业径于君子之涂矣。使文学言之而是,仆之言有何害?使文学言之而非,虽微丞相史,孰不非也?”

      文学曰:“以正辅人谓之忠,以邪导人谓之佞。夫怫过纳善者,君之忠臣,大夫之直士也。孔子曰:‘大夫有争臣三人,虽无道,不失其家。’今子处宰士之列,无忠正之心,枉不能正,邪不能匡,顺流以容身,从风以说上。上所言则苟听,上所行则曲从,若影之随形,响之于声,终无所是非。衣儒衣,冠儒冠,而不能行其道,非其儒也。譬若土龙,文章首目具而非龙也。葶历似菜而味殊,玉石相似而异类。子非孔氏执经守道之儒,乃公卿面从之儒,非吾徒也。冉有为季氏宰而附益之,孔子曰:‘小子鸣鼓而攻之,可也。故辅桀者不为智,为桀敛者不为仁。”  

          丞相史默然不对。  


          利议第二十七


          大夫曰:“作世明主,忧劳万民,思念北边之未安,故使使者举贤良、文学高第,详延有道之士,将欲观殊议异策,虚心倾耳以听,庶几云得。诸生无能出奇计,远图伐匈奴安边境之策,抱枯竹,守空言,不知趋舍之宜,时世之变,议论无所依,如膝痒而搔背,辩讼公门之下,不可胜听,如品即口以成事,此岂明主所欲闻哉?”

      文学曰:“诸生对册,殊路同归,指在崇礼义,退财利,复往古之道,匡当世之失,莫不云太平;虽未尽可亶用,宜若有可行者焉。执事闇于明礼,而喻于利末,沮事隋议,计虑筹策,以故至今未决。非儒无成事,公卿欲成利也。”

      大夫曰:“色厉而内荏,乱真者也。文表而枲里,乱实者也。文学裒衣博带,窃周公之服;鞠躬踧踖,窃仲尼之容;议论称诵,窃商、赐之辞;刺讥言治,窃管、晏之才。心卑卿相,志小万乘。及授之政,昏乱不治。故以言举人,若以毛相马。此其所以多不称举。诏策曰:‘朕嘉宇内之士,故详延四方豪俊文学博习之士,超迁官禄。’言者不必有德,何者?言之易而行之难。有舍其车而识其牛,贵其不言而多成事也。吴铎以其舌自破,主父偃以其舌自杀。鹖鴠夜鸣,无益于明;主父鸣鸱,无益于死。非有司欲成利,文学桎梏于旧术,牵于间言者也。”

      文学曰:“能言之,能行之者,汤、武也。能言,不能行者,有司也。文学窃周公之服,有司窃周公之位。文学桎梏于旧术,有司桎梏于财利。主父偃以舌自杀,有司以利自困。夫骥之才千里,非造父不能使;禹之知万人,非舜为相不能用。故季桓子听政,柳下惠忽然不见,孔子为司寇,然后悖炽。骥,举之在伯乐,其功在造父。造父摄辔,马无驽良,皆可取道。周公之时,士无贤不肖,皆可与言治。故御之良者善调马,相之贤者善使士。今举异才而使臧驺御之,是犹扼骥盐车而责之使疾。此贤良、文学多不称举也。”

      大夫曰:“嘻!诸生阘茸无行,多言而不用,情貌不相副。若穿踰之盗,自古而患之。是孔丘斥逐于鲁君,曾不用于世也。何者?以其首摄多端,迂时而不要也。故秦王燔去其术而不行,坑之渭中而不用。乃安得鼓口舌,申颜眉,预前论议,是非国家之事也?”


      国疾第二十八


      文学曰:“国有贤士而不用,非士之过,有国者之耻。孔子大圣也,诸侯莫能用,当小位于鲁,三月,不令而行,不禁而止,沛若时雨之灌万物,莫不兴起也。况乎位天下之本朝,而施圣主之德音教泽乎?今公卿处尊位,执天下之要,十有余年,功德不施于天下,而勤劳于百姓,百姓贫陋困穷,而私家累万金。此君子所耻,而伐檀所刺也。昔者,商鞅相秦,后礼让,先贪鄙,尚首功,务进取,无德厚于民,而严刑罚于国,俗日坏而民滋怨,故惠王烹菹其身,以谢天下。当此之时,亦不能论事矣。今执政患儒贫贱而多言,儒亦忧执事富贵而多患也。”

      大夫视文学,悒悒而不言也。丞相史曰:“夫辩国家之政事,论执政之得失,何不徐徐道理相喻,何至切切如此乎!大夫难罢盐、铁者,非有私也,忧国家之用,边境之费也。诸生誾誾争盐、铁,亦非为己也,欲反之于古而辅成仁义也。二者各有所宗,时世异务,又安可坚任古术而非今之理也。且夫小雅非人,必有以易之。诸生若有能安集国中,怀来远方,使边境无寇虏之灾,租税尽为诸生除之,何况盐、铁、均输乎!所以贵术儒者,贵其处谦推让,以道尽人。今辩讼愕愕然,无赤、赐之辞,而见鄙倍之色,非所闻也。大夫言过,而诸生亦如之,诸生不直谢大夫耳。”

      贤良、文学皆离席曰:‘鄙人固陋,希涉大庭,狂言多不称,以逆执事。夫药酒苦于口而利于病,忠言逆于耳而利于行。故愕愕者福也,諓諓者贼也。林中多疾风,富贵多谀言。万里之朝,日闻唯唯,而后闻诸生之愕愕,此乃公卿之良药针石。”

      大夫色少宽,面文学而苏贤良曰:“穷巷多曲辩,而寡见者难喻。文学守死溟涬之语,而终不移。夫往古之事,昔有之语,己可睹矣。今以近世观之,自以目有所见,耳有所闻,世殊而事异。文、景之际,建元之始,民朴而归本,吏廉而自重,殷殷屯屯,人衍而家富。今政非改而教非易也,何世之弥薄而俗之滋衰也!吏即少廉,民即寡耻,刑非诛恶,而奸犹不止。世人有言:‘鄙儒不如都士。’文学皆出山东,希涉大论。子大夫论京师之日久,愿分明政治得失之事,故所以然者也。”

      贤良曰:“夫山东天下之腹心,贤士之战场也。高皇帝龙飞凤举于宋、楚之间,山东子弟萧、曹、樊、郦、滕、灌之属为辅,虽即异世,亦既闳夭、太颠而已。禹出西羌,文王生北夷,然圣德高世,有万人之才,负迭群之任,出入都市,一旦不知返,数然后终于厮役而已。仆虽不生长京师,才驽下愚,不足与大议,窃以所闻闾里长老之言,往者,常民衣服温暖而不靡,器质朴牢而致用,衣足以蔽体,器足以便事,马足以易步,车足以自载,酒足以合欢而不湛,乐足以理心而不淫,入无宴乐之闻,出无佚游之观,行即负嬴,止则锄耘,用约而财饶,本修而民富,送死哀而不华,养生适而不奢,大臣正而无欲,执政宽而不苛;故黎民宁其性,百吏保其官。建元之始,崇文修德,天下乂安。其后,邪臣各以伎艺,亏乱至治,外障山海,内兴诸利。杨可告缗,江充禁服,张大夫革令,杜周治狱,罚赎科适,微细并行,不可胜载。夏兰之属妄搏,王温舒之徒妄杀,残吏萌起,扰乱良民。当此之时,百姓不保其首领,豪富莫必其族姓。圣主觉焉,乃刑戮充等,诛灭残贼,以杀死罪之怨,塞天下之责,然居民肆然复安。然其祸累世不复,疮痍至今未息。故百官尚有残贼之政,而强宰尚有强夺之心。大臣擅权而击断,豪猾多党而侵陵,富贵奢侈,贫贱篡杀,女工难成而易弊,车器难就而易败,车不累 ,器不终岁,一车千石,一衣十钟。常民文杯画案,机席缉 ,婢妾衣纨履丝,匹庶粺饭肉食,里有俗,党有场,康庄驰逐,穷巷蹋鞠,秉耒抱臿,躬耕身织者寡,聚要敛容、傅白黛青者众。无而为有,贫而强夸,文表无里,纨 枲装,生不养,死厚送,葬死殚家,遣女满车,富者欲过,贫者欲及,富者空减,贫者称贷。是以民年急而岁促,贫即寡耻,乏即少廉,此所以刑非诛恶而奸犹不止也。故国有严急之征,即生散不足之疾矣。”


          散不足第二十九


    大夫曰:“吾以贤良为少愈,乃反其幽明,若胡车相随而鸣。诸生独不见季夏之螇乎?音声入耳,秋至而声无。者生无易由言,不顾其患,患至而后默,晚矣。”
    贤良曰:“孔子读史记,喟然而叹,伤正德之废,君臣之危也。夫贤人君子,以天下为任者也。任大者思远,思远者忘近。诚心闵悼,恻隐加尔,故忠心独而无累。此诗人所以伤而作,比干、子胥遗身忘祸也。其恶劳人若斯之急,安能默乎?诗云:‘忧心如惔,不敢戏谈。’孔子栖栖,疾固也。墨子遑遑,闵世也。”

      大夫默然。

      丞相曰:“愿闻散不足。”

          贤良曰:“宫室舆马,衣服器械,丧祭食饮,声色玩好,人情之所不能已也。故圣人为之制度以防之。间者,士大夫务于权利,怠于礼义;故百姓仿效,颇踰制度。今故陈之,曰:

          “古者,谷物菜果,不时不食,鸟兽鱼鳖,不中杀不食。故徼罔不入于泽,杂毛不取。今富者逐驱歼罔罝,掩捕麑鷇,耽湎沈酒铺百川。鲜羔(羊兆),几胎肩,皮黄口。春鹅秋鶵,冬葵温韭,浚茈蓼苏,丰薷耳菜,毛果虫貉。

          “古者,采椽茅茨,陶桴复穴,足御寒暑、蔽风雨而已。及其后世,采椽不斲,茅茨不翦,无斲削之事,磨砻之功。大夫达棱楹,士颖首,庶人斧成木构而已。今富者井干增梁,雕文槛楯,垩(巾夔)壁饰。“古者,衣服不中制,器械不中用,不粥于市。今民间雕琢不中之物,刻画玩好无用之器。玄黄杂青,五色绣衣,戏弄蒲人杂妇,百兽马戏斗虎,唐锑追人,奇虫胡妲。

          “古者,诸侯不秣马,天子有命,以车就牧。庶人之乘马者,足以代其劳而已。故行则服桅,止则就犁。今富者连车列骑,骖贰辎軿。中者微舆短毂,繁髦掌蹄。夫一马伏枥,当中家六口之食,亡丁男一人之事。  

          “古者,庶人耋老而后衣丝,其余则麻枲而已,故命曰布衣。及其后,则丝里枲表,直领无袆,袍合不缘。夫罗纨文绣者,人君后妃之服也。茧紬缣练者,婚姻之嘉饰也。是以文缯薄织,不粥于市。今富者缛绣罗纨,中者素绨冰锦。常民而被后妃之服,亵人而居婚姻之饰。夫纨素之贾倍缣,缣之用倍纨也。

      “古者,椎车无柔,栈舆无植。及其后,木軨不衣,长毂数幅,蒲荐苙盖,盖无漆丝之饰。大夫士则单(木复)木具,盘韦柔革。常民漆舆大軨蜀轮。今庶人富者银黄华左搔,结绥韬杠。中者错镳涂采,珥靳飞軨。

      “古者,鹿裘皮冒,蹄足不去。及其后,大夫士狐貉缝腋,羔麑豹袪。庶人则毛彤,羝幞皮?。今富者鼲貂,狐白凫翁。中者罽衣金缕,燕(鼠各)代黄。

      “古者,庶人贱骑绳控,革鞮皮荐而已。及其后,革鞍牦成,铁镳不饰。今富者(革真)耳银镊躐(足改革),黄金琅勒,罽绣弇汗,华珥明鲜。中者漆韦绍系,采画暴干。

      “古者,污尊抔饮,盖无爵觞樽俎。及其后,庶人器用即竹柳陶匏而已。唯瑚琏觞豆而后雕文彤漆。今富者银口黄耳,金罍玉钟。中者野王纻器,金错蜀杯。夫一文杯得铜杯十,贾贱而用不殊。箕子之讥,始在天子,今在匹夫。  “古者,燔黍食稗,而捭豚以相飨。其后,乡人饮酒,老者重豆,少者立食,一酱一肉,旅饮而已。及其后,宾婚相召,则豆羹白饭,綦脍熟肉。今民间酒食,殽旅重叠,燔炙满案,臑鳖脍鲤,麑卵鹑鷃橙枸,鲐鳢醢醯,众物杂味。

      “古者,庶人春夏耕耘,秋冬收藏,昏晨力作,夜以继日。诗云:‘昼尔于茅,宵尔索绹,亟其乘屋,其始播百谷。’非膢腊不休息,非祭祀无酒肉。今宾昏酒食,接连相因,析酲什半,弃事相随,虑无乏日。

      “古者,庶人粝食藜藿,非乡饮酒膢腊祭祀无酒肉。故诸侯无故不杀牛羊,大夫士无故不杀犬豕。今闾巷县佰。阡伯屠沽,无故烹杀,相聚野外。负粟而往,挈肉而归。夫一豕之肉,得中年之收,十五斗粟,当丁男半月之食。

      “古者,庶人鱼菽之祭,春秋修其祖祠。士一庙,大夫三,以时有事于五祀,盖无出门之祭。今富者祈名岳,望山川,椎牛击鼓,戏倡舞像。中者南居当路,水上云台,屠羊杀狗,鼓瑟吹笙。贫者鸡豕五芳,卫保散腊,倾盖社场。

      “古者,德行求福,故祭祀而宽。仁义求吉,故卜筮而希。今世俗宽于行而求于鬼,怠于礼而笃于祭,嫚亲而贵势,至妄而信日,听訑言而幸得,出实物而享虚福。

      “古者,君子夙夜孳孳思其德;小人晨昏孜孜思其力。故君子不素餐,小人不空食。今世俗饰伪行诈,为民巫祝,以取厘谢,坚健舌,或以成业致富,故惮事之人,释本相学。是以街巷有巫,闾里有祝。  

          “古者,无杠樠之寝,床栘之案。及其后世,庶人即采木之杠,牒桦之樠。士不斤成,大夫苇莞而已。今富者黼绣帷幄,涂屏错跗。中者锦绨高张,采画丹漆。  

          “古者,皮毛草蓐,无茵席之加,旃蒻之美。及其后,大夫士复荐草缘,蒲平单莞。庶人即草蓐索经,单蔺蘧蒢而已。今富者绣茵翟柔,蒲子露床。中者滩皮代旃,阘坐平莞。

      “古者不粥饪,不市食。及其后,则有屠沽,沽酒市脯鱼盐而已。今熟食遍列,殽施成市,作业堕怠,食必趣时,杨豚韭卵,狗(月习)马朘,煎鱼切肝,羊淹鸡寒,挏马酪酒,蹇捕胃脯,胹羔豆赐,鷇膹鴈羹,臭鲍甘瓠,熟梁貊炙。

      “古者,土鼓块枹,击木拊石,以尽其欢。及其后,卿大夫有管磬,士有琴瑟。往者,民间酒会,各以党俗,弹筝鼓缶而已。无要妙之音,变羽之转。今富者钟鼓五乐,歌儿数曹。中者鸣竽调瑟,郑舞赵讴。  

          “古者,瓦棺容尸,木板堲周,足以收形骸,藏发齿而已。及其后,桐棺不衣,采椁不斲。今富者绣墙题凑。中者梓棺楩椁,贫者画荒衣袍,缯囊缇橐。

      “古者,明器有形无实,示民不可用也。及其后,则有醢之藏,桐马偶人弥祭,其物不备。今厚资多藏,器用如生人。郡国繇吏,素桑楺偶车橹轮,匹夫无貌领,桐人衣纨绨。  

          “古者,不封不树,反虞祭于寝,无坛宇之居,庙堂之位。及其后,则封之,庶人之坟半仞,其高可隐。今富者积土成山,列树成林,台榭连阁,集观增楼。中者祠堂屏合,垣阙罘罳。

      “古者,邻有丧,舂不相杵,巷不歌谣。孔子食于有丧者之侧,未尝饱也,子于是日哭,则不歌。今俗因人之丧以求酒肉,幸与小坐而责辨,歌舞俳优,连笑伎戏。

      “古者,男女之际尚矣,嫁娶之服,未之以记。及虞、夏之后,盖表布内丝,骨笄象珥,封君夫人加锦尚褧而已。今富者皮衣朱貉,繁露环佩。中者长裾交袆,璧瑞簪珥。

      “古者,事生尽爱,送死尽哀。故圣人为制节,非虚加之。今生不能致其爱敬,死以奢侈相高;虽无哀戚之心,而厚葬重币者,则称以为孝,显名立于世,光荣着于俗。故黎民相慕效,至于发屋卖业。

      “古者,夫妇之好,一男一女,而成家室之道。及后,士一妾,大夫二,诸侯有侄娣九女而已。今诸侯百数,卿大夫十数,中者侍御,富者盈室。是以女或旷怨失时,男或放死无匹。

      “古者,凶年不备,丰年补败,仍旧贯而不改作。今工异变而吏殊心,坏败成功,以匿厥意。意极乎功业,务存乎面目。积功以市誉,不恤民之急。田野不辟,而饰亭落,邑居丘墟,而高其郭。  

          “古者,不以人力徇于禽兽,不夺民财以养狗马,是以财衍而力有余。今猛兽奇虫不可以耕耘,而令当耕耘者养食之。百姓或短褐不完,而犬马衣文绣,黎民或糟糠不接,而禽兽食粱肉。

      “古者,人君敬事爱下,使民以时,天子以天下为家,臣妾各以其时供公职,古今之通义也。今县官多畜奴婢,坐禀衣食,私作产业,为奸利,力作不尽,县官失实。百姓或无斗筲之储,官奴累百金;黎民昏晨不释事,奴婢垂拱遨游也。

      “古者,亲近而疏远,贵所同而贱非类。不赏无功,不养无用。今蛮、貊无功,县官居肆,广屋大第,坐禀衣食。百姓或旦暮不赡,蛮、夷或厌酒肉。黎民泮汗力作,蛮、夷交胫肆踞。

      “古者,庶人该菲草芰,缩丝尚韦而已。及其后,则綦下不借,挽鞮革舄。今富者革中名工,轻靡使容,纨里紃下,越端纵缘。中者邓里闲作蒯苴。蠢竖婢妾,韦沓丝履。走者茸芰絇绾。

      “古圣人劳躬养神,节欲适情,尊天敬地,履德行仁。是以上天歆焉,永其世而丰其年。故尧秀眉高彩,享国百载。及秦始皇览怪迂,信禨祥,使卢生求羡门高,徐市等入海求不死之药。当此之时,燕、齐之士,释锄耒,争言神仙。方士于是趣咸阳者以千数,言仙人食金饮珠,然后寿与天地相保。于是数巡狩五岳、滨海之馆,以求神仙蓬莱之属。数幸之郡县,富人以赀佐,贫者筑道旁。其后,小者亡逃,大者藏匿;吏捕索掣顿,不以道理。名宫之旁,庐舍丘落,无生苗立树;百姓离心,怨思者十有半。书曰:‘享多仪,仪不及物曰不享。’故圣人非仁义不载于己,非正道不御于前。是以先帝诛文成、五利等,宣帝建学官,亲近忠良,欲以绝怪恶之端,而昭至德之涂也。

      “宫室奢侈,林木之蠹也。器械雕琢,财用之蠹也。衣服靡丽,布帛之蠹也。狗马食人之食,五谷之蠹也。口腹从恣,鱼肉之蠹也。用费不节,府库之蠹也。漏积不禁,田野之蠹也。丧祭无度,伤生之蠹也。堕成变故伤功,工商上通伤农。故一杯桊用百人之力,一屏风就万人之功,其为害亦多矣!目修于五色,耳营于五音,体极轻薄,口极甘脆,功积于无用,财尽于不急,口腹不可为多。故国病聚不足即政怠,人病聚不足则身危。”

      丞相曰:“治聚不足奈何?”


      救匮第三十


          贤良曰:“盖桡枉者以直,救文者以质。昔者,晏子相齐,一狐裘三十载。故民奢,示之以俭;民俭,示之以礼。方今公卿大夫子孙,诚能节车舆,适衣服,躬亲节俭,率以敦朴,罢园池,损田宅,内无事乎市列,外无事乎山泽,农夫有所施其功,女工有所粥其业;如是,则气脉和平,无聚不足之病矣。”

      大夫曰:“孤子语孝,躄者语杖,贫者语仁,贱者语治。议不在己者易称,从旁议者易是,其当局则乱。故公孙弘布被,倪宽练袍,衣若仆妾,食若庸夫。淮南逆于内,蛮、夷暴于外,盗贼不为禁,奢侈不为节;若疫岁之巫,徒能鼓口耳,何散不足之能治乎?”

      贤良曰:“高皇帝之时,萧、曹为公,滕、灌之属为卿,济济然斯则贤矣。文、景之际,建元之始,大臣尚有争引守正之义。自此之后,多承意从欲,少敢直言面议而正刺,因公而徇私。故武安丞相讼园田,争曲直人主之前。夫九层之台一倾,公输子不能正;本朝一邪,伊、望不能复。故公孙丞相、倪大夫侧身行道,分禄以养贤,卑己以下士,功业显立,日力不足,无行人子产之继。而葛绎、彭侯之等,隳坏其绪,纰乱其纪,毁其客馆议堂,以为马厩妇舍,无养士之礼,而尚骄矜之色,廉耻陵迟而争于利矣。故良田广宅,民无所之;不耻为利者满朝市,列田畜者弥郡国,横暴掣顿,大第巨舍之旁,道路且不通,此固难医而不可为工。”

      大夫勃然作色,默而不应。


      箴石第三十一


          丞相曰:“吾闻诸郑长者曰:‘君子正颜色,则远暴嫚;出辞气,则远鄙倍矣。’故言可述,行可则。此有司夙昔所愿睹也。若夫剑客论、博奕辩,盛色而相苏,立权以不相假,使有司不能取贤良之议,而贤良、文学被不逊之名,窃为诸生不取也。公孙龙有言:‘论之为道辩,故不可以不属意,属意相宽,相宽其归争,争而不让,则入于鄙。’今有司以不仁,又蒙素餐,无以更责雪耻矣。县官所招举贤良、文学,而及亲民伟仕,亦未见其能用箴石而医百姓之疾也。”

      贤良曰:“贾生有言:‘恳言则辞浅而不入,深言则逆耳而失指。’故曰:‘谈何容易。’谈且不易,而况行之乎?此胡建所以不得其死,而吴得几不免于患也。语曰:‘五盗执一良人,枉木恶直绳。’今欲下箴石,通关鬲,则恐有盛、胡之累,怀箴橐艾,则被不工之名。‘狼跋其胡,载踕其尾。’君子之路,行止之道固狭耳。此子石所以叹息也。”


      除狭第三十二


      大夫曰:“贤者处大林,遭风雷而不迷。愚者虽处平敞大路,犹暗惑焉。今守、相亲剖符赞拜,莅一郡之众,古方伯之位也。受命专制,宰割千里,不御于内;善恶在于己,己不能故耳,道何狭之有哉?”

      贤良曰:“古之进士也,乡择而里选,论其才能,然后官之,胜职任然后爵而禄之。故士修之乡曲,升诸朝廷,行之幽隐,明足显著。疏远无失士,小大无遗功。是以贤者进用,不肖者简黜。今吏道杂而不选,富者以财贾官,勇者以死射功。戏车鼎跃,咸出补吏,累功积日,或至卿相。垂青绳,擐银龟,擅杀生之柄,专万民之命。弱者,犹使狼将羊也,其乱必矣。强者,则是予狂夫利剑也,必妄杀生也。是以往者,郡国黎民相乘而不能理,或至锯颈杀不辜而不能正。执纲纪非其道,盖博乱愈甚。古者,封贤禄能,不过百里;百里之中而为都,疆垂不过五十,犹以为一人之身,明不能照,聪不得达,故立卿、大夫、士以佐之,而政治乃备。今守、相或无古诸侯之贤,而莅千里之政,主一郡之众,施圣主之德,擅生杀之法,至重也。非仁人不能任,非其人不能行。一人之身,治乱在己,千里与之转化,不可不熟择也。故人主有私人以财,不私人以官,悬赏以待功,序爵以俟贤,举善若不足,黜恶若仇雠,固为其非功而残百姓也。夫辅主德,开臣途,在于选贤而器使之,择练守、相然后任之。”  


          疾贪第三十三


      大夫曰:“然。为医以拙矣,又多求谢。为吏既多不良矣,又侵渔百姓。长吏厉诸小吏,小吏厉诸百姓。故不患择之不熟,而患求之与得异也;不患其不足也,患其贪而无厌也。”  

          贤良曰:“古之制爵禄也,卿大夫足以润贤厚士,士足以优身及党,庶人为官者,足以代其耕而食其禄。今小吏禄薄,郡国繇役,远至三辅,粟米贵,不足相赡。常居则匮于衣食,有故则卖畜粥业。非徒是也,繇使相遣,官庭摄追,小计权吏,行施乞贷,长吏侵渔,上府下求之县,县求之乡,乡安取之哉?语曰:‘货赂下流,犹水之赴下,不竭不止。’今大川江河饮巨海,巨海受之,而欲溪谷之让流潦;百官之廉,不可得也。夫欲影正者端其表,欲下廉者先之身。故贪鄙在率不在下,教训在政不在民也。”

      大夫曰:“贤不肖有质,而贪鄙有性,君子内洁己而不能纯教于彼。故周公非不正管、蔡之邪,子产非不正邓皙之伪也。夫内不从父兄之教,外不畏刑法之罪,周公、子产不能化,必也。今一一则责之有司,有司岂能缚其手足而使之无为非哉?”

      贤良曰:“驷马不驯,御者之过也。百姓不治,有司之罪也。春秋刺讥不及庶人,责其率也。故古者大夫将临刑,声色不御,刑以当矣,犹三巡而嗟叹之。其耻不能以化而伤其不全也。政教闇而不着,百姓颠蹶而不扶,犹赤子临井焉,听其入也。若此,则何以为民父母?故君子急于教,缓于刑。刑一而正百,杀一而慎万。是以周公诛管、蔡,而子产诛邓皙也。刑诛一施,民遵礼义矣。夫上之化下,若风之靡草,无不从教。何一一而缚之也?”

      

          后刑第三十四


      大夫曰:“古之君子,善善而恶恶。人君不畜恶民,农夫不畜无用之苗。无用之苗,苗之害也;无用之民,民之贼也。鉏一害而众苗成,刑一恶而万民悦。虽周公、孔子不能释刑而用恶。家之有姐子,器皿不居,况姐民乎!民者敖于爱而听刑。故刑所以正民,鉏所以别苗也。”

      贤良曰:“古者,笃教以导民,明辟以正刑。刑之于治,犹策之于御也。良工不能无策而御、有策而勿用。圣人假法以成教,教成而刑不施。故威厉而不杀,刑设而不犯。今废其纪纲而不能张,坏其礼义而不能防。民陷于网,从而猎之以刑,是犹开其阑牢,发以毒矢也,不尽不止。曾子曰:‘上失其道,民散久矣。如得其情,即哀矜而勿喜。’夫不伤民之不治,而伐己之能得奸,犹弋者睹鸟兽挂罻罗而喜也。今天下之被诛者,不必有管、蔡之邪、邓皙之伪,恐苗尽而不别,民欺而不治也。孔子曰:‘人而不仁,疾之已甚,乱也。’故民乱反之政,政乱反之身,身正而天下定。是以君子嘉善而矜不能,恩及刑人,德润穷夫,施惠悦尔,行刑不乐也。”


      授时第三十五


          大夫曰:“共其地,居是世也,非有灾害疾疫,独以贫穷,非惰则奢也;无奇业旁入,而犹以富给,非俭则力也。今曰施惠悦尔,行刑不乐;则是闵无行之人,而养惰奢之民也。故妄予不为惠,惠恶者不为仁。”

      贤良曰:“三代之盛无乱萌,教也;夏、商之季世无顺民,俗也。是以王者设庠序,明教化,以防道其民,及政教之洽,性仁而喻善。故礼义立,则耕者让于野;礼义坏,则君子争于朝。人争则乱,乱则天下不均,故或贫或富。富则仁生,赡则争止。昏暮叩人门户,求水火,贪夫不吝,何则?所饶也。夫为政而使菽粟如水火,民安有不仁者乎!”

      大夫曰:“博戏驰逐之徒,皆富人子弟,非不足者也。故民饶则僭侈,富则骄奢,坐而委蛇,起而为非,未见其仁也。夫居事不力,用财不节,虽有财如水火,穷乏可立而待也。有民不畜,有司虽助之耕织,其能足之乎?”

      贤良曰:“周公之相成王也,百姓饶乐,国无穷人,非代之耕织也。易其田畴,薄其税敛,则民富矣。上以奉君亲,下无饥寒之忧,则教可成也。语曰:‘既富矣,又何加焉?曰,教之。’教之以德,齐之以礼,则民徙义而从善,莫不入孝出悌,夫何奢侈暴慢之有?管子曰:‘仓廪实而知礼节,百姓足而知荣辱。’故富民易与适礼。”

      大夫曰:“县官之于百姓,若慈父之于子也:忠焉能勿诲乎?爱之而勿劳乎?故春亲耕以劝农,赈贷以赡不足,通滀水,出轻系,使民务时也。蒙恩被泽,而至今犹以贫困,其难与适道若是夫!”  

          贤良曰:“古者,春省耕以补不足,秋省敛以助不给。民勤于财则贡赋省,民勤于力则功筑罕。为民爱力,不夺须臾。故召伯听断于甘棠之下,为妨农业之务也。今时雨澍泽,种悬而不得播,秋稼零落乎野而不得收。田畴赤地,而停落成市,发春而后,悬青幡而策土牛,殆非明主劝耕稼之意,而春令之所谓也。”  


          水旱第三十六


      大夫曰:“禹、汤圣主,后稷、伊尹贤相也,而有水旱之灾。水旱,天之所为,饥穰,阴阳之运也,非人力。故太岁之数,在阳为旱,在阴为水。六岁一饥,十二岁一荒。天道然,殆非独有司之罪也。”  

          贤良曰:“古者,政有德,则阴阳调,星辰理,风雨时。故行修于内,声闻于外,为善于下,福应于天。周公载纪而天下太平,国无夭伤,岁无荒年。当此之时,而不破块,风不鸣条,旬而一雨,而必以夜。无丘陵高下皆熟。诗曰:‘有渰萋萋,兴雨祁祁。’今不省其所以然,而曰‘阴阳之运也’,非所闻也。孟子曰:‘野有饿殍,不知收也;狗豕食人食,不知检也;为民父母,民饥而死,则曰,非我也,岁也,何异乎以刃杀之,则曰,非我也,兵也?’方今之务,在除饥寒之患,罢盐、铁,退权利,分土地,趣本业,养桑麻,尽地力也。寡功节用,则民自富。如是,则水旱不能忧,凶年不能累也。”

      大夫曰:“议者贵其辞约而指明,可于众人之听,不至繁文稠辞,多言害有司化俗之计,而家人语。陶朱为生,本末异径,一家数事,而治生之道乃备。今县官铸农器,使民务本,不营于末,则无饥寒之累。盐、铁何害而罢?”

      贤良曰:“农,天下之大业也,铁器,民之大用也。器用便利,则用力少而得作多,农夫乐事劝功。用不具,则田畴荒,谷不殖,用力鲜,功自半。器便与不便,其功相什而倍也。县官鼓铸铁器,大抵多为大器,务应员程,不给民用。民用钝弊,割草不痛,是以农夫作剧,得获者少,百姓苦之矣。”

      大夫曰:“卒徒工匠,以县官日作公事,财用饶,器用备。家人合会,褊于日而勤于用,铁力不销炼,坚柔不和。故有司请总盐、铁,一其用,平其贾,以便百姓公私。虽虞、夏之为治,不易于此。吏明其教,工致其事,则刚柔和,器用便。此则百姓何苦?而农夫何疾?”  

          贤良曰:“卒徒工匠!故民得占租鼓铸、煮盐之时,盐与五谷同贾,器和利而中用。今县官作铁器,多苦恶,用费不省,卒徒烦而力作不尽。家人相一,父子戮力,各务为善器,器不善者不集。农事急,挽运衍之阡陌之间。民相与市买,得以财货五谷新币易货;或时贳民,不弃作业。置田器,各得所欲。更繇省约,县官以徒复作缮治道桥诸发,民便之。今总其原,壹其贾,器多坚 ,善恶无所择。吏数不在,器难得。家人不能多储,多储则镇生。弃膏腴之日,远市田器,则后良时。盐、铁贾贵,百姓不便。贫民或木耕手耨,土耰淡食。铁官卖器不售或颇赋与民。卒徒作不中呈,时命助之。发征无限,更繇以均剧,故百姓疾苦之。古者,千室之邑,百乘之家,陶冶工商,四民之求,足以相更。故农民不离畦亩,而足乎田器,工人不斩伐而足乎材木,陶冶不耕田而足乎粟米,百姓各得其便,而上无事焉。是以王者务本不作末,去炫耀,除雕琢,湛民以礼,示民以朴,是以百姓务本而不营于末。”


          崇礼第三十七


      大夫曰:“饰几杖,修樽俎,为宾,非为主也。炫耀奇怪,所以陈四夷,非为民也。夫家人有客,尚有倡优奇变之乐,而况县官乎?故列羽旄,陈戎马,所以示威武,奇虫珍怪,所以示怀广远、明盛德,远国莫不至也。”  

          贤良曰:“王者崇礼施德,上仁义而贱怪力,故圣人绝而不言。孔子曰:‘言忠信,行笃敬,虽蛮、貊之邦,不可弃也。’今万方绝国之君奉贽献者,怀天子之盛德,而欲观中国之礼仪,故设明堂、辟雍以示之,扬干戚、昭雅、颂以风之。今乃以玩好不用之器,奇虫不畜之兽,角抵诸戏,炫耀之物陈夸之,殆与周公之待远方殊。昔周公处谦以卑士,执礼以治天下,辞越裳之贽,见恭让之礼也;既,与入文王之庙,是见大孝之礼也。目睹威仪干戚之容,耳听清歌雅、颂之声,心充至德,欣然以归,此四夷所以慕义内附,非重译狄鞮来观猛兽熊罴也。夫犀象兕虎,南夷之所多也;骡驴馲驼,北狄之常畜也。中国所鲜,外国贱之,南越以孔雀珥门户,昆山之旁,以玉璞抵乌鹊。今贵人之所贱,珍人之所饶,非所以厚中国,明盛德也。隋、和,世之名宝也,而不能安危存亡。故喻德示威,惟贤臣良相,不在犬马珍怪。是以圣王以贤为宝,不以珠玉为宝。昔晏子修之樽俎之间,而折冲乎千里;不能者,虽隋、和满箧,无益于存亡。”

      大夫曰:“晏子相齐三君,崔庆无道,劫其君,乱其国,灵公国围;庄公弒死;景公之时,晋人来攻,取垂都,举临菑,边邑削,城郭焚,宫室隳,宝器尽,何冲之所能折乎?由此观之:贤良所言,贤人为宝,则损益无轻重也。”  

          贤良曰:“管仲去鲁入齐,齐霸鲁削,非持其众而归齐也。伍子胥挟弓干阖闾,破楚入郢,非负其兵而适吴也。故贤者所在国重,所去国轻。楚有子玉得臣,文公侧席;虞有宫之奇,晋献不寐。夫贤臣所在,辟除开塞者亦远矣。故春秋曰:‘山有虎豹,葵藿为之不采;国有贤士,边境为之不害’也。”


      备胡第三十八


      大夫曰:“鄙语曰:‘贤者容不辱。’以世俗言之,乡曲有桀,人尚辟之。今明天子在上,匈奴公为寇,侵扰边境,是仁义犯而藜藿采。昔狄人侵太王,匡人畏孔子,故不仁者,仁之贼也。是以县官厉武以讨不义,设机械以备不仁。”  

          贤良曰:“匈奴处沙漠之中,生不食之地,天所贱而弃之,无坛宇之居,男女之别,以广野为闾里,以穹庐为家室,衣皮蒙毛,食肉饮血,会市行,牧竖居,如中国之麋鹿耳。好事之臣,求其义,责之礼,使中国干戈至今未息,万里设备,此兔罝之所刺,故小人非公侯腹心干城也。”

      大夫曰:“天子者,天下之父母也。四方之众,其义莫不愿为臣妾;然犹修城郭,设关梁,厉武士,备卫于宫室,所以远折难而备万方者也。今匈奴未臣,虽无事,欲释备,如之何?”

      贤良曰:“吴王所以见禽于越者,以其越近而陵远也。秦所以亡者,以外备胡、越而内亡其政也。夫用军于外,政败于内,备为所患,增主所忧。故人主得其道,则遐迩偕行而归之,文王是也;不得其道,则臣妾为寇,秦王是也。夫文衰则武胜,德盛则备寡。”

      大夫曰:“往者,四夷俱强,并为寇虐:朝鲜踰徼,劫燕之东地;东越越东海,略浙江之南;南越内侵,滑服令;氐、僰、冉、駹、巂唐、昆明之属,扰陇西、巴、蜀。今三垂已平,唯北边未定。夫一举则匈奴震惧,中外释备,而何寡也?”

      贤良曰:“古者,君子立仁修义,以绥其民,故迩者习善,远者顺之。是以孔子仕于鲁,前仕三月及齐平,后仕三月及郑平,务以德安近而绥远。当此之时,鲁无敌国之难,邻境之患。强臣变节而忠顺,故季桓隳其都城。大国畏义而合好,齐人来归郓、讙、龟阴之田。故为政而以德,非独辟害折冲也,所欲不求而自得。今百姓所以嚣嚣,中外不宁者,咎在匈奴。内无室宇之守,外无田畴之积,随美草甘水而驱牧,匈奴不变业,而中国以骚动矣。风合而云解,就之则亡,击之则散,未可一世而举也。”

      大夫曰:“古者,明王讨暴卫弱,定倾扶危。卫弱扶危,则小国之君悦;讨暴定倾,则无罪之人附。今不征伐,则暴害不息;不备,则是以黎民委敌也。春秋贬诸侯之后,刺不卒戍。行役戍备,自古有之,非独今也。”

      贤良曰:“匈奴之地广大,而戎马之足轻利,其势易骚动也。利则虎曳,病则鸟折,辟锋锐而取罢极;少发则不足以更适,多发则民不堪其役。役烦则力罢,用多则财乏。二者不息,则民遗怨。此秦之所以失民心、陨社稷也。古者,天子封畿千里,繇役五百里,胜声相闻,疾病相恤。无过时之师,无踰时之役。内节于民心,而事适其力。是以行者劝务,而止者安业。今山东之戎马甲士戍边郡者,绝殊辽远,身在胡、越、心怀老母。老母垂泣,室妇悲恨,推其饥渴,念其寒苦。诗云:‘昔我往矣,杨柳依依。今我来思,雨雪霏霏。行道迟迟,载渴载饥。我心伤悲,莫之我哀。’故圣人怜其如此,闵其久去父母妻子,暴露中野,居寒苦之地,故春使使者劳赐,举失职者,所以哀远民而慰抚老母也。德惠甚厚,而吏未称奉职承诏以存恤,或侵侮士卒,兴之为市,并力兼作,使之不以理。故士卒失职,而老母妻子感恨也。宋伯姬愁思而宋国火,鲁妾不得意而鲁寝灾。今天下不得其意者,非独西宫之女。宋之老母也。春秋动众则书,重民也。宋人围长葛,讥久役也。君子之用心必若是。”

      大夫默然不对。


      执务第三十九


      丞相曰:“先王之道,轶久而难复,贤良、文学之言,深远而难行。夫称上圣之高行,道至德之美言,非当世之所能及也。愿闻方今之急务,可复行于政:使百姓咸足于衣食,无乏困之忧;风雨时,五谷熟,螟螣不生;天下安乐,盗贼不起;流人还归,各反其田里;吏皆廉正,敬以奉职,元元各得其理也。”

      贤良曰:“孟子曰:‘尧、舜之道,非远人也,而人不思之耳。’诗云:‘求之不得,寤寐思服。’有求如关睢,好德如河广,何不济不得之有?故高山仰止,景行行止,虽不能及,离道不远也。颜渊曰:‘舜独何人也,回何人也?’夫思贤慕能,从善不休,则成、康之俗可致,而唐、虞之道可及。公卿未思也,先王之道,何远之有?齐桓公以诸侯思王政,忧周室,匡诸夏之难,平夷、狄之乱,存亡接绝,信义大行,着于天下。邵陵之会,予之为主。传曰:‘予积也。’故土积而成山阜,水积而成江海,行积而成君子。孔子曰:‘吾于河广,知德之至也。’而欲得之,各反其本,复诸古而已。古者,行役不踰时,春行秋反,秋行春来,寒暑未变,衣服不易,固已还矣。夫妇不失时,人安和如适。狱讼平,刑罚得,则阴阳调,风雨时。上不苛扰,下不烦劳,各修其业,安其性,则螟螣不生,而水旱不起。赋敛省而农不失时,则百姓足,而流人归其田里。上清静而不欲,则下廉而不贪。若今则繇役极远,尽寒苦之地,危难之处,涉胡、越之域,今兹往而来岁旋,父母延颈而西望,男女怨旷而相思,身在东楚,志在西河,故一人行而乡曲恨,一人死而万人悲。诗云:‘王事靡盬,不能艺稷黍,父母何怙?’‘念彼恭人,涕零如雨。岂不怀归?畏此罪罟。’吏不奉法以存抚,倍公任私,各以其权充其嗜欲,人愁苦而怨思,上不恤理,则恶政行而邪气作;邪气作,则虫螟生而水旱起。若此,虽祷祀雩祝,用事百神无时,岂能调阴阳而息盗贼矣?”


      能言第四十


      大夫曰:“盲者口能言白黑,而无目以别之。儒者口能言治乱,而无能以行之。夫坐言不行,则牧童兼乌获之力,蓬头苞尧、舜之德。故使言而近,则儒者何患于治乱,而盲人何患于白黑哉?言之不出,耻躬之不逮。故卑而言高,能言而不能行者,君子耻之矣。”

      贤良曰:“能言而不能行者,国之宝也。能行而不能言者,国之用也。兼此二者,君子也。无一者,牧童、蓬头也。言满天下,德覆四海,周公是也。口言之,躬行之,岂若默然载施其行而已。则执事亦何患何耻之有?今道不举而务小利,慕于不急以乱群意,君子虽贫,勿为可也。药酒,病之利也;正言,治之药也。公卿诚能自强自忍,食文学之至言,去权诡,罢利官,一归之于民,亲以周公之道,则天下治而颂声作。儒者安得治乱而患之乎?”  


          取下第四十一


      大夫曰:“不轨之民,困桡公利,而欲擅山泽。从文学、贤良之意,则利归于下,而县官无可为者。上之所行则非之,上之所言则讥之,专欲损上徇下,亏主而适臣,尚安得上下之义,君臣之礼?而何颂声能作也?”

      贤良曰:“古者,上取有量,自养有度,乐岁不盗,年饥则肆,用民之力,不过岁三日,籍敛,不过十一。君笃爱,臣尽力,上下交让,天下平。‘浚发尔私’,上让下也。‘遂及我私’,先公职也。孟子曰:‘未有仁而遗其亲,义而后其君也。’君君臣臣,何为其无礼义乎?及周之末涂,德惠塞而嗜欲众,君奢侈而上求多,民困于下,怠于上公,是以有履亩之税,硕鼠之诗作也。卫灵公当隆冬兴众穿池,海春谏曰:‘天寒,百姓冻馁,愿公之罢役也。’公曰:‘天寒哉?我何不寒哉?’人之言曰:‘安者不能恤危,饱者不能食饥。’故余粱肉者难为言隐约,处佚乐者难为言勤苦。夫高堂邃宇、广厦洞房者,不知专屋狭庐、上漏下湿者之也。系马百驷、货财充内、储陈纳新者,不知有旦无暮、称贷者之急也。广第唐园、良田连比者,不知无运踵之业、窜头宅者之役也。原马被山,牛羊满谷者,不知无孤豚瘠犊者之窭也。高枕谈卧、无叫号者,不知忧私责与吏正戚者之愁也。被纨蹑韦、搏粱啮肥者,不知短褐之寒、糠(米舌)之苦也。从容房闱之间、垂拱持案食者,不知跖耒躬耕者之勤也。乘坚驱良、列骑成行者,不知负檐步行者之劳也。匡床旃席、侍御满侧者,不知负辂挽船、登高绝流者之难也。衣轻暖、被美裘、处温室、载安车者,不知乘边城、飘胡、代、乡清风者之危寒也。妻子好合。子孙保之者,不知老母之憔悴、匹妇之悲恨也。耳听五音、目视弄优者,不知蒙流矢、距敌方外者之死也。东向伏几、振笔如调文者,不知木索之急、棰楚者之痛也。坐旃茵之上,安图籍之言若易然,亦不知步涉者之难也。昔商鞅之任秦也,刑人若刈菅茅,用师若弹丸;从军者暴骨长城,戍漕者辇车相望,生而往,死而旋,彼独非人子耶?故君子仁以恕,义以度,所好恶与天下共之,所不施不仁者。公刘好货,居者有积,行者有囊。太王好色,内无怨女,外无旷夫。文王作刑,国无怨狱。武王行师,士乐为之死,民乐为之用。若斯,则民何苦而怨,何求而讥?”

      公卿愀然,寂若无人。于是遂罢议止词。

          奏曰:“贤良、文学不明县官事,猥以盐、铁为不便。请且罢郡国榷沽、关内铁官。”  

          奏曰︰“可。”


      击之第四十二


      贤良、文学既拜,咸取列大夫,辞丞相、御史。

      大夫曰:“前议公事,贤良、文学称引往古,颇乖世务。论者不必相反,期于可行。往者,县官未事胡、越之时,边城四面受敌,北边尤被其苦。先帝绝三方之难,抚从方国,以为蕃蔽,穷极郡国,以讨匈奴。匈奴壤界兽圈,孤弱无与,此困亡之时也。辽远不遂,使得复喘息,休养士马,负绐西域。西域迫近胡寇,沮心内解,必为巨患。是以主上欲扫除,烦仓廪之费也。终日逐禽,罢而释之,则非计也。盖舜绍绪,禹成功。今欲以军兴击之,何如?”

      文学曰:“异时,县官修轻赋,公用饶,人富给。其后,保胡、越,通四夷,费用不足。于是兴利害,算车舡,以訾助边,赎罪告缗,与人以患矣。甲士死于军旅,中士罢于转漕,仍之以科适,吏征发极矣。夫劳而息之,极而反本,古之道也,虽舜、禹兴,不能易也。”

      大夫曰:“昔夏后底洪水之灾,百姓孔勤,罢于笼臿,及至其后,咸享其功。先帝之时,郡国颇烦于戎事,然亦宽三陲之役。语曰:‘见机不遂者陨功。’一日违敌,累世为患。休劳用供,因弊乘时。帝王之道,圣贤之所不能失也。功业有绪,恶劳而不卒,犹耕者倦休而困止也。夫事辍者无功,耕怠者无获也。”

      文学曰:“地广而不德者国危,兵强而凌敌者身亡。虎兕相据,而蝼蚁得志。两敌相抗,而匹夫乘闲。是以圣王见利虑害,见远存近。方今为县官计者,莫若偃兵休士,厚币结和亲,修文德而已。若不恤人之急,不计其难,弊所恃以穷无用之地,亡十获一,非文学之所知也。”


          结和第四十三


      大夫曰:“汉兴以来,修好结和亲,所聘遗单于者甚厚;然不纪重质厚赂之故改节,而暴害滋甚。先帝睹其可以武折,而不可以德怀,故广将帅,招奋击,以诛厥罪;功勋粲然,着于海内,藏于记府,何命‘亡十获一’乎?夫偷安者后危,虑近者忧迩,贤者离俗,智士权行,君子所虑,众庶疑焉。故民可与观成,不可与图始。此有司所独见,而文学所不睹。”

      文学曰:“往者,匈奴结和亲,诸夷纳贡,即君臣外内相信,无胡、越之患。当此之时,上求寡而易赡,民安乐而无事,耕田而食,桑麻而衣,家有数年之蓄,县官余货财,闾里耆老,咸及其泽。自是之后,退文任武,苦师劳众,以略无用之地,立郡沙石之间,民不能自守,发屯乘城,挽辇而赡之。愚窃见其亡,不睹其成。”

      大夫曰:“匈奴以虚名市于汉,而实不从;数为蛮、貊所绐,不痛之,何故也?高皇帝仗剑定九州;今以九州而不行于匈奴。闾里常民,尚有枭散,况万里之主与小国之匈奴乎?夫以天下之力勤何不摧?以天下之士民何不服?今有帝名,而威不信于长城之外,反赂遗而尚踞敖,此五帝所不忍,三王所毕怒也。”  

          文学曰:“汤事夏而卒服之,周事殷而卒灭之。故以大御小者王,以强凌弱者亡。圣人不困其众以兼国,良御不困其马以兼道。故造父之御不失和,圣人之治不倍德。秦摄利衔以御宇内,执修棰以笞八极,骖服以罢,而鞭策愈加,故有倾衔遗棰之变。士民非不众,力勤非不多也,皆内倍外附而莫为用。此高皇帝所以仗剑而取天下也。夫两主好合,内外交通,天下安宁,世世无患,士民何事?三王何怒焉?”

      大夫曰:“伯翳之始封秦,地为七十里。穆公开霸,孝公广业。自卑至上,自小至大。故先祖基之,子孙成之。轩辕战涿鹿,杀两皞、蚩尤而为帝,汤、武伐夏、商,诛桀、纣而为王。黄帝以战成功,汤、武以伐成孝。故手足之勤,腹肠之养也。当世之务,后世之利也。今四夷内侵,不攘,万世必有长患。先帝兴义兵以诛强暴,东灭朝鲜,西定冉、駹,南擒百越,北挫强胡,追匈奴以广北州,汤、武之举,蚩尤之兵也。故圣主斥地,非私其利,用兵,非徒奋怒也,所以匡难辟害,以为黎民远虑。”

      文学曰:“秦南禽劲越,北却强胡,竭中国以役四夷,人罢极而主不恤,国内溃而上不知;是以一夫倡而天下和,兵破陈涉,地夺诸侯,何嗣之所利?诗云:‘雍雍鸣鳱,旭日始旦。’登得前利,不念后咎。故吴王知伐齐之便,不知干遂之患。秦知进取之利,而不知鸿门之难。是知一而不知十也。周谨小而得大,秦欲大而亡小。语曰:‘前车覆,后车戒。’‘殷鉴不远,在夏后之世’矣。”


      诛秦第四十四 


          大夫曰:“秦、楚、燕、齐、周之封国也;三晋之君,齐之田氏,诸侯家臣也;内守其国,外伐不义,地广壤进,故立号万乘,而为诸侯。宗周修礼长文,然国翦弱,不能自存,东摄六国,西畏于秦,身以放迁,宗庙绝祀。赖先帝大惠,绍兴其后,封嘉颍川,号周子男君。秦既幷天下,东绝沛水,并灭朝鲜,南取陆梁,北却胡、狄,西略氐、羌,立帝号,朝四夷。舟车所通,足迹所及,靡不毕至。非服其德,畏其威也。力多则人朝,力寡则朝于人矣。”

      文学曰:“禹、舜,尧之佐也,汤、文,夏、商之臣也,其所以从八极而朝海内者,非以陆梁之地,兵革之威也。秦、楚、三晋号万乘,不务积德而务相侵,构兵争强而卒俱亡。虽以进壤广地,如食萴之充肠也,欲其安存,何可得也?夫礼让为国者若江、海,流弥久不竭,其本美也。苟为无本,若蒿火暴怒而无继,其亡可立而待,战国是也。周德衰,然后列于诸侯,至今不绝。秦力尽而灭其族,安得朝人也?”

      大夫曰:“中国与边境,犹支体与腹心也。夫肌肤寒于外,腹心疾于内,内外之相劳,非相为赐也!唇亡则齿寒,支体伤而心憯怛。故无手足则支体废,无边境则内国害。昔者,戎狄攻太王于邠,踰岐、梁而与秦界于泾、渭,东至晋之陆浑,侵暴中国,中国疾之。今匈奴蚕食内侵,远者不离其苦,独边境蒙其败。诗云:‘忧心惨惨,念国之为虐。’不征备,则暴害不息。故先帝兴义兵以征厥罪,遂破祁连、天山,散其聚党,北略至龙城,大围匈奴,单于失魂,仅以身免,乘奔逐北,斩首捕虏十余万。控弦之民,旃裘之长,莫不沮胆,挫折远遁,遂乃振旅。浑耶率其众以降,置五属国以距胡,则长城之内,河、山之外,罕被寇。于是下诏令,减戍漕,宽徭役。初虽劳苦,卒获其庆。”

      文学曰:“周累世积德,天下莫不愿以为君,故不劳而王,恩施由近而远,而蛮、貊自至。秦任战胜以幷天下,小海内而贪胡、越之地,使蒙恬击胡,取河南以为新秦,而忘其故秦,筑长城以守胡,而亡其所守。往者,兵革亟动,师旅数起,长城之北,旋车遗镞相望。及李广利等轻计-计还马足,莫不寒心;虽得浑耶,不能更所亡。此非社稷之至计也。”


      伐功第四十五


      大夫曰:“齐桓公越燕伐山戎,破孤竹,残令支。赵武灵王踰句注,过代谷,略灭林胡、楼烦。燕袭走东胡,辟地千里,度辽东而攻朝鲜。蒙公为秦击走匈奴,若鸷鸟之追群雀。匈奴势慑,不敢南面而望十余年。及其后,蒙公死而诸侯叛秦,中国扰乱,匈奴纷纷,乃敢复为边寇。夫以小国燕、赵,尚犹却寇虏以广地,今以汉国之大,士民之力,非特齐桓之众,燕、赵之师也;然匈奴久未服者,群臣不幷力,上下未谐故也。”

      文学曰:“古之用师,非贪壤土之利,救民之患也。民思之,若旱之望雨,箪食壶浆,以逆王师。故忧人之患者,民一心而归之,汤、武是也。不爱民之死,力尽而溃叛者,秦王是也。孟子曰:‘君不乡道,不由仁义,而为之强战,虽克必亡。’此中国所以扰乱,非蒙恬死而诸侯叛秦。昔周室之盛也,越裳氏来献,百蛮致贡。其后周衰,诸侯力征,蛮、貊分散,各有聚党,莫能相一,是以燕、赵能得意焉。其后,匈奴稍强,蚕食诸侯,故破走月氏,因兵威,徙小国,引弓之民,幷为一家,一意同力,故难制也。前君为先帝画匈奴之策:‘兵据西域,夺之便势之地,以候其变。以汉之强,攻于匈奴之众,若以强弩溃痈疽;越之禽吴,岂足道哉!’上以为然。用君之义,听君之计,虽越王之任种、蠡不过。以搜粟都尉为御史大夫,持政十有余年,未见种、蠡之功,而见靡弊之效,匈奴不为加俛,而百姓黎民以敝矣。是君之策不能弱匈奴,而反衰中国也。善为计者,固若此乎?”


      西域第四十六


      大夫曰:“往者,匈奴据河、山之险,擅田牧之利,民富兵强,行入为寇,则句注之内惊动,而上郡以南咸城。文帝时,虏入萧关,烽火通甘泉,群臣惧不知所出,乃请屯京师以备胡。胡西役大宛、康居之属,南与群羌通。先帝推让斥夺广饶之地,建张掖以西,隔绝羌、胡,瓜分其援。是以西域之国,皆内拒匈奴,断其右臂,曳剑而走,故募人田畜以广用,长城以南,滨塞之郡,马牛放纵,蓄积布野,未睹其计之所过。夫以弱越而遂意强吴,才地计众非钧也,主思臣谋,其往必矣。”

      文学曰:“吴、越迫于江、海,三川循环之,处于五湖之间,地相迫,壤相次,其势易以相禽也。金鼓未闻,旌旗未舒,行军未定,兵以接矣。师无辎重之费,士无乏绝之劳,此所谓食于厨仓而战于门郊者也。今匈奴牧于无穷之泽,东西南北,不可穷极,虽轻车利马,不能得也,况负重嬴兵以求之乎?其势不相及也。茫茫乎若行九皋未知所止,皓皓乎若无网罗而渔江、海,虽及之,三军罢弊,适遗之饵也。故明王知其无所利,以为役不可数行,而权不可久张也,故诏公卿大夫、贤良、文学,所以复枉兴微之路。公卿宜思百姓之急,匈奴之害,缘圣主之心,定安平之业。今乃留心于末计,摧本议,不顺上意,未为尽于忠也。

      大夫曰:“初,贰师不克宛而还也,议者欲使人主不遂忿,则西域皆瓦解而附于胡,胡得众国而益强。先帝绝奇听,行武威,还袭宛,宛举国以降,效其器物,致其宝马。乌孙之属骇胆,请为臣妾。匈奴失魄,奔走遁逃,虽未尽服,远处寒苦硗埆之地,壮者死于祁连、天山,其孤未复。故群臣议以为匈奴困于汉兵,折翅伤翼,可遂击服。会先帝弃群臣,以故匈奴不革。譬如为山,未成一篑而止,度功业而无继成之理,是弃与胡而资强敌也。辍几沮成,为主计若斯,亦未可谓尽忠也。”

      文学曰:“有司言外国之事,议者皆徼一时之权,不虑其后。张骞言大宛之天马汗血,安息之真玉大鸟,县官既闻如甘心焉,乃大兴师伐宛,历数期而后克之。夫万里而攻人之国,兵未战而物故过半,虽破宛得宝马,非计也。当此之时,将卒方赤面而事四夷,师旅相望,郡国并发,黎人困苦,奸伪萌生,盗贼并起,守尉不能禁,城邑不能止。然后遣上大夫衣绣衣以兴击之。当此时,百姓元元,莫必其命,故山东豪杰,颇有异心。赖先帝圣灵斐然。其咎皆在于欲毕匈奴而远几也。为主计若此,可谓忠乎?”


      世务第四十七


          大夫曰:“诸生妄言!议者令可详用,无徒守椎车之语,滑稽而不可循。夫汉之有匈奴,譬若木之有蠹,如人有疾,不治则寖以深。故谋臣以为击夺以困极之。诸生言以德怀之,此有其语而不可行也。诸生上无以似三王,下无以似近秦,令有司可举而行当世,安蒸庶而宁边境者乎?”

      文学曰:“昔齐桓公内附百姓,外绥诸侯,存亡接绝,而天下从风。其后,德亏行衰,葵丘之会,振而矜之,叛者九国。春秋刺其不崇德而崇力也。故任德,则强楚告服,远国不召而自至;任力,则近者不亲,小国不附。此其效也。诚上观三王之所以昌,下论秦之所以亡,中述齐桓所以兴,去武行文,废力尚德,罢关梁,除障塞,以仁义导之,则北垂无寇虏之忧,中国无干戈之事矣。”

      大夫曰:“事不豫辨,不可以应卒。内无备,不可以御敌。诗云:‘诰尔民人,谨尔侯度,用戒不虞。’故有文事,必有武备。昔宋襄公信楚而不备,以取大辱焉,身执囚而国几亡。故虽有诚信之心,不知权变,危亡之道也。春秋不与夷、狄之执中国,为其无信也。匈奴贪狼,因时而动,乘可而发,飙举电至。而欲以诚信之心,金帛之宝,而信无义之诈,是犹亲跖、蹻而扶猛虎也。”

      文学曰:“春秋‘王者无敌。’言其仁厚,其德美,天下宾服,莫敢交也。德行延及方外,舟车所臻,足迹所及,莫不被泽。蛮、貊异国,重译自至。方此之时,天下和同,君臣一德,外内相信,上下辑睦。兵设而不试,干戈闭藏而不用。老子曰:‘兕无所用其角,螫虫无所输其毒。’故君仁莫不仁,君义莫不义。世安得跖、蹻而亲之乎?”  

          大夫曰:“布心腹,质情素,信诚内感,义形乎色。宋华元、楚司马子反之相睹也,符契内合,诚有以相信也。今匈奴挟不信之心,怀不测之诈,见利如前,乘便而起,潜进市侧,以袭无备。是犹措重宝于道路而莫之守也。求其不亡,何可得乎?”

      文学曰:“诚信着乎天下,醇德流乎四海,则近者哥讴而乐之,远者执禽而朝之。故正近者不以威,来远者不以武,德义修而任贤良也。故民之于事也,辞佚而就劳,于财也,辞多而就寡。上下交让,道路鴈行。方此之时,贱货而贵德,重义而轻利,赏之不窃,何宝之守也!”


      和亲第四十八


      大夫曰:“昔徐偃王行义而灭,鲁哀公好儒而削。知文而不知武,知一而不知二。故君子笃仁以行,然必筑城以自守,设械以自备,为不仁者之害己也。是以古者,搜狝振旅而数军实焉,恐民之愉佚而亡戒难。故兵革者国之用,城垒者国之固也;而欲罢之,是去表见里,示匈奴心腹也。匈奴轻举潜进,以袭空虚,是犹不介而当矢石之蹊,祸必不振。此边境之所惧,而有司之所忧也。”

      文学曰:“往者,通关梁,交有无,自单于以下,皆亲汉内附,往来长城之下。其后,王恢误谋马邑,匈奴绝和亲,攻当路塞,祸纷拏而不解,兵连而不息,边民不解甲弛弩,行数十年,介胄而耕耘,鉏耰而候望,燧燔烽举,丁壮弧弦而出斗,老者超越而入葆。言之足以流涕寒心,则仁者不忍也。诗云:‘投我以桃,报之以李。’未闻善往而有恶来者。故君子敬而无失,与人恭而有礼,四海之内,皆为兄弟也。故内省不疚,夫何忧何惧!”

      大夫曰:“自春秋诸夏之君,会聚相结,三会之后,乖疑相从,伐战不止;六国从亲,冠带相接,然未尝有坚约。况禽兽之国乎!春秋存君在楚,诘鼬之会书公,绐夷、狄也。匈奴数和亲,而常先犯约,贪侵盗驱,长诈之国也。反复无信,百约百叛,若朱、象之不移,商均之不化。而欲信其用兵之备,亲之以德,亦难矣。”

      文学曰:“王者中立而听乎天下,德施方外,绝国殊俗,臻于阙廷,凤皇在列树,麒麟在郊薮,群生庶物,莫不被泽。非足行而仁办之也,推其仁恩而皇之,诚也。范蠡出于越,由余长于胡,皆为霸王贤佐。故政有不从之教,而世无不可化之民。诗云:‘酌彼行潦,挹彼注兹。’故公刘处戎、狄,戎、狄化之。太王去豳,豳民随之。周公修德,而越裳氏来。其从善如影响。为政务以德亲近,何忧于彼之不改?”


          繇役第四十九


      大夫曰:“屠者解分中理,可横以手而离也;至其抽筋凿骨,非行金斧不能决。圣主循性而化,有不从者,亦将举兵而征之,是以汤诛葛伯,文王诛犬夷。及后戎、狄猾夏,中国不宁,周宣王、仲山甫式遏寇虐。诗云:‘薄伐猃狁,至于太原。’‘出车彭彭,城彼朔方。’自古明王不能无征伐而服不义,不能无城垒而御强暴也。”

      文学曰:“舜执干戚而有苗服,文王底德而怀四夷。诗云:‘镐京辟雍,自西自东,自南自北,无思不服。’普天之下,惟人面之伦,莫不引领而归其义。故画地为境,人莫之犯。子曰:‘白刃可冒,中庸不可入。’至德之谓也。故善攻不待坚甲而克,善守不待渠梁而固。武王之伐殷也,执黄钺,誓牧之野,天下之士莫不愿为之用。既而偃兵,搢笏而朝,天下之民莫不愿为之臣。既以义取之,以德守之。秦以力取之,以法守之,本末不得,故亡。夫文犹可长用,而武难久行也。”

      大夫曰:“诗云:‘猃狁孔炽,我是用戒。’‘武夫潢潢,经营四方。’故守御征伐,所由来久矣。春秋大戎未至而豫御之。故四支强而躬体固,华叶茂而本根据。故饬四境所以安中国也,发戍漕所以审劳佚也。主忧者臣劳,上危者下死。先帝忧百姓不赡,出禁钱,解乘舆骖,贬乐损膳,以赈穷备边费。未见报施之义,而见沮成之理,非所闻也。”

      文学曰:“周道衰,王迹熄,诸侯争强,大小相凌。是以强国务侵,弱国设备。甲士劳战阵,役于兵革,故君劳而民困苦也。今中国为一统,而方内不安,徭役远而外内烦也。古者,无过年之繇,无逾时之役。今近者数千里,远者过万里,历二期。长子不还,父母愁忧,妻子咏叹,愤懑之恨发动于心,慕思之积痛于骨髓。此杕杜、采薇之所为作也。”


      险固第五十


      大夫曰:“虎兕所以能执熊罴、服群兽者,爪牙利而攫便也。秦所以超诸侯、吞天下、幷敌国者,险阻固而势居然也。故龟猖有介,狐貉不能禽;蝮蛇有螫,人忌而不轻。故有备则制人,无备则制于人。故仲山甫补衮职之阙,蒙公筑长城之固,所以备寇难,而折冲万里之外也。今不固其外,欲安其内,犹家人不坚垣墙,狗吠夜惊,而闇昧妄行也。”

      文学曰:“秦左殽、函,右陇阺,前蜀、汉,后山、河,四塞以为固,金城千里,良将勇士,设利器而守陉隧,墨子守云梯之械也。以为虽汤、武复生,蚩尤复起,不轻攻也。然戍卒陈胜无将帅之任,师旅之众,奋空拳而破百万之师,无墙篱之难。故在德不在固。诚以仁义为阻,道德为塞,贤人为兵,圣人为守,则莫能入。如此则中国无狗吠之警,而边境无鹿骇狼顾之忧矣。夫何妄行而之乎?”

      大夫曰:“古者,为国必察土地、山陵阻险、天时地利,然后可以王霸。故制地城郭,饬沟垒,以御寇固国。春秋曰:‘冬浚洙。’修地利也。三军顺天时,以实击虚,然困于阻险,敌于金城。楚庄之围宋,秦师败崤嵚崟,是也。故曰:‘天时不如地利。’羌、胡固,近于边,今不取,必为四境长患。此季孙之所以忧颛臾,有句贱之变,而为强吴之所悔也。”

      文学曰:“地利不如人和,武力不如文德。周之致远,不以地利,以人和也。百世不夺,非以险,以德也。吴有三江、五湖之难,而兼于越。楚有汝渊、两堂之固,而灭于秦。秦有陇阺、崤塞,而亡于诸侯。晋有河、华、九阿,而夺于六卿。齐有泰山、巨海,而胁于田常。桀、纣有天下,兼于滈亳。秦王以六合困于陈涉。非地利不固,无术以守之也。释迩忧远,犹吴不内定其国,而西绝淮水与齐、晋争强也;越因其罢,击其虚。使吴王用申胥,修德,无恃极其众,则句践不免为藩臣海崖,何谋之敢虑也?”

      大夫曰:“楚自巫山起方城,属巫、黔中,设扞关以拒秦。秦包商、洛、崤、函,以御诸侯。韩阻宜阳、伊阙,要成皋、太行,以安周、郑。魏滨洛筑城、阻山带河,以保晋国。赵结飞狐、句注、孟门,以存邢代。燕塞碣石,绝邪谷,绕援辽。齐抚阿、甄,关荣、历,倚太山,负海、河。关梁者,邦国之固,而山川者,社稷之宝也。徐人灭舒,春秋谓之‘取’,恶其无备,得物之易也。故恤来兵,仁伤刑。君子为国,必有不可犯之难。易曰:‘重门击拓,以待暴客。’言备之素修也。”

      文学曰:“阻险不如阻义,昔汤以七十里,为政于天下,舒以百里,亡于敌国。此其所以见恶也。使关梁足恃,六国不兼于秦;河、山足保,秦不亡于楚、汉。由此观之:冲隆不足为强,高城不足为固。行善则昌,行恶则亡。王者博爱远施,外内合同,四海各以其职来祭,何击拓而待?传曰:‘诸侯之有关梁,庶人之有爵禄,非升平之兴,盖自战国始也。”  


          论勇第五十一


      大夫曰:“荆轲怀数年之谋而事不就者,尺八匕首不足恃也。秦王惮于不意,列断贲、育者,介七尺之利也。使专诸空拳,不免于为禽;要离无水,不能遂其功。世言强楚劲郑,有犀兕之甲,棠溪之铤也。内据金城,外任利兵,是以威行诸夏,强服敌国。故孟贲奋臂,众人轻之;怯夫有备,其气自倍。况以吴、楚之士,舞利剑,蹶强弩,以与貉虏骋于中原?一人当百,不足道也!夫如此,则貉无交兵,力不支汉,其势必降。此商君之走魏,而孙膑之破梁也。”  

          文学曰:“楚、郑之棠溪、墨阳,非不利也,犀胄兕甲,非不坚也,然而不能存者,利不足恃也。秦兼六国之师,据崤、函而御宇内,金石之固,莫耶之利也。然陈胜无士民之资,甲兵之用,鉏耰棘橿,以破冲隆。武昭不击,乌号不发。所谓金城者,非谓筑壤而高土,凿地而深池也。所谓利兵者,非谓吴、越之铤,干将之剑也。言以道德为城,以仁义为郭,莫之敢攻,莫之敢入。文王是也。以道德为胄,以仁义为剑,莫之敢当,莫之敢御,汤、武是也。今不建不可攻之城,不可当之兵,而欲任匹夫之役,而行三尺之刃,亦细矣!”

      大夫曰:“荆轲提匕首入不测之强秦;秦王惶恐失守备,卫者皆惧。专诸手剑摩万乘,刺吴王,尸孽立正,镐冠千里。聂政自卫,由韩廷刺其主,功成求得,退自刑于朝,暴尸于市。今诚得勇士,乘强汉之威,凌无义之匈奴,制其死命,责以其过,若曹刿之胁齐桓公,遂其求。推锋折锐,穹庐扰乱,上下相遁,因以轻锐随其后。匈奴必交臂不敢格也。”

      文学曰:“汤得伊尹,以区区之亳兼臣海内,文王得太公,廓酆、鄗以为天下,齐桓公得管仲以霸诸侯,秦穆公得由余,西戎八国服。闻得贤圣而蛮、貊来享,未闻劫杀人主以怀远也。诗云:‘惠此中国,以绥四方。’故‘自彼氐、羌,莫不来王。’非畏其威,畏其德也。故义之服无义,疾于原马良弓;以之召远,疾于驰传重驿。”


      论功第五十二


      大夫曰:“匈奴无城廓之守,沟池之固,修戟强弩之用,仓廪府库之积,上无义法,下无文理,君臣嫚易,上下无礼,织柳为室,旃廗为盖。素弧骨镞,马不粟食。内则备不足畏,外则礼不足称。夫中国天下腹心,贤士之所总,礼义之所集,财用之所殖也。夫以智谋愚,以义伐不义,若因秋霜而振落叶。春秋曰:“桓公之与戎、狄、驱之尔。”况以天下之力乎?”

      文学曰:“匈奴车器无银黄丝漆之饰,素成而务坚,丝无文采裙袆曲襟之制,都成而务完。男无刻镂奇巧之事,宫室城郭之功。女无绮绣淫巧之贡,纤绮罗纨之作。事省而致用,易成而难弊。虽无修戟强弩,戎马良弓;家有其备,人有其用,一旦有急,贯弓上马而已。资粮不见案首,而支数十日之食,因山谷为城郭,因水草为仓廪。法约而易辨,求寡而易供。是以刑省而不犯,指麾而令从。嫚于礼而笃于信,略于文而敏于事。故虽无礼义之书,刻骨卷木,百官有以相记,而君臣上下有以相使。群臣为县官计者,皆言其易,而实难,是以秦欲驱之而反更亡也。故兵者凶器,不可轻用也。其以强为弱,以存为亡,一朝尔也。”

      大夫曰:“鲁连有言:‘秦权使其士,虏使其民。’故政急而不长。高皇帝受命平暴乱,功德巍巍,惟天同大焉。而文、景承绪润色之。及先帝征不义,攘无德,以昭仁圣之路,纯至德之基,圣王累年仁义之积也。今文学引亡国失政之治,而况之于今,其谓匈奴难图,宜矣!”

      文学曰:“有虞氏之时,三苗不服,禹欲伐之,舜曰:‘是吾德未喻也。’退而修政,而三苗服。不牧之地,不羁之民,圣王不加兵,不事力焉,以为不足烦百姓而劳中国也。今明主修圣绪,宣德化,而朝有权使之谋,尚首功之事,臣固怪之。夫人臣席天下之势,奋国家之用,身享其利而不顾其主,此尉佗、章邯所以成王,秦失其政也。孙子曰:‘今夫国家之事,一日更百变,然而不亡者,可得而革也。逮出兵乎平原广牧,鼓鸣矢流,虽有尧、舜之知,不能更也。’战而胜之,退修礼义,继三代之迹,仁义附矣。战胜而不休,身死国亡者,吴王是也。”

      大夫曰:“顺风而呼者易为气,因时而行者易为力。文、武怀余力,不为后嗣计,故三世而德衰,昭王南征,死而不还。凡伯囚执,而使不通,晋取郊、沛,王师败于茅戎。今西南诸夷,楚庄之后;朝鲜之王,燕之亡民也。南越尉佗起中国,自立为王,德至薄,然皆亡天下之大,各自以为一州,倔强倨敖,自称老夫。先帝为万世度,恐有冀州之累,南荆之患,于是遣左将军楼船平之,兵不血刃,咸为县官也。七国之时,皆据万乘,南面称王,提珩为敌国累世,然终不免俛首系虏于秦。今匈奴不当汉家之巨郡,非有六国之用,贤士之谋。由此观难易,察然可见也。”

      文学曰:“秦灭六国,虏七王,沛然有余力,自以为蚩尤不能害,黄帝不能斥。及二世弒死望夷,子婴系颈降楚,曾不得七王之俛首。使六国并存,秦尚为战国,固未亡也。何以明之?自孝公以至于始皇,世世为诸侯雄,百有余年。及兼天下,十四岁而亡。何则?外无敌国之忧,而内自纵恣也。自非圣人,得志而不骄佚者,未之有也。”


      论邹第五十三


      大夫曰:“邹子疾晚世之儒墨,不知天地之弘,昭旷之道,将一曲而欲道九折,守一隅而欲知万方,犹无准平而欲知高下,无规矩而欲知方圆也。于是推大圣终始之运,以喻王公,先列中国名山通谷,以至海外。所谓中国者,天下八十一分之一,名曰赤县神州,而分为九州。绝陵陆不通,乃为一州,有大瀛海圜其外。此所谓八极,而天地际焉。禹贡亦着山川高下原隰,而不知大道之径。故秦欲达九州而方瀛海,牧胡而朝万国。诸生守畦亩之虑,闾巷之固,未知天下之义也。”

      文学曰:“尧使禹为司空,平水土,随山刊木,定高下而序九州。邹衍非圣人,作怪误,荧惑六国之君,以纳其说。此春秋所谓‘匹夫荧惑诸侯’者也。孔子曰:‘未能事人,焉能事鬼神?’近者不达,焉能知瀛海?故无补于用者,君子不为;无益于治者,君子不由。三王信经道,而德光于四海;战国信嘉言,而破亡如丘山。昔秦始皇已吞天下,欲幷万国,亡其三十六郡;欲达瀛海,而失其州县。知大义如斯,不如守小计也。”  


          论菑第五十四


      大夫曰:“巫祝不可与并祀,诸生不可与逐语,信往疑今,非人自是。夫道古者稽之今,言远者合之近。日月在天,其征在人,菑异之变,夭寿之期,阴阳之化,四时之叙,水火金木,妖祥之应,鬼神之灵,祭祀之福,日月之行,星辰之纪,曲言之故,何所本始?不知则默,无苟乱耳。”  

          文学曰:“始江都相董生推言阴阳,四时相继,父生之,子养之,母成之,子藏之。故春生,仁;夏长,德;秋成,义;冬藏,礼。此四时之序,圣人之所则也。刑不可任以成化,故广德教。言远必考之迩,故内恕以行,是以刑罚若加于己,勤劳若施于身。又安能忍杀其赤子,以事无用,罢弊所恃,而达瀛海乎?盖越人美蠃蚌而简太牢,鄙夫乐咋唶而怪韶濩。故不知味者,以芬香为臭,不知道者,以美言为乱耳。人无夭寿,各以其好恶为命。羿、敖以巧力不得其死,智伯以贪狠亡其身。天菑之证,祯祥之应,犹施与之望报,各以其类及。故好行善者,天助以福,符瑞是也。易曰:‘自天佑之,吉无不利。’好行恶者,天报以祸,妖菑是也。春秋曰:‘应是而有天菑。’周文、武尊贤受谏,敬戒不殆,纯德上休,神只相况。诗云:‘降福穰穰,降福简简。’日者阳,阳道明;月者阴,阴道冥;君尊臣卑之义。故阳光盛于上,众阴之类消于下;月望于天,蚌蛤盛于渊。故臣不臣,则阴阳不调,日月有变;政教不均,则水旱不时,螟螣生。此灾异之应也。四时代叙,而人则其功,星列于天,而人象其行。常星犹公卿也,众星犹万民也。列星正则众星齐,常星乱则众星坠矣。”  

          大夫曰:“文学言刚柔之类,五胜相代生。易明于阴阳,书长于五行。春生夏长,故火生于寅木,阳类也;秋生冬死,故水生于申金,阴物也。四时五行,迭废迭兴,阴阳异类,水火不同器。金得土而成,得火而死,金生于巳,何说何言然乎?”  

          文学曰:“兵者,凶器也。甲坚兵利,为天下殃。以母制子,故能久长。圣人法之,厌而不阳。诗云:‘载戢干戈,载橐弓矢,我求懿德,肆于时夏。’衰世不然。逆天道以快暴心,僵尸血流,以争壤土。牢人之君,灭人之祀,杀人之子,若绝草木,刑者肩靡于道。以己之所恶而施于人。是以国家破灭,身受其殃,秦王是也。”

      大夫曰:“金生于巳,刑罚小加,故荠麦夏死。易曰:‘履霜,坚冰至。’秋始降霜,草木陨零,合冬行诛,万物毕藏。春夏生长,利以行仁。秋冬杀藏,利以施刑。故非其时而树,虽生不成。秋冬行德,是谓逆天道。月令:‘凉风至,杀气动,蜻蛚鸣,衣裘成。天子行微刑,始貙蒌,以顺天令。’文学同四时,合阴阳,尚德而除刑。如此,则鹰隼不鸷,猛兽不攫,秋不搜狝,冬不田狩者也。”

      文学曰:“天道好生恶杀,好赏恶罪。故使阳居于实而宣德施,阴藏于虚而为阳佐辅。阳刚阴柔,季不能加孟。此天贱冬而贵春,申阳屈阴。故王者南面而听天下,背阴向阳,前德而后刑也。霜雪晚至,五谷犹成。雹雾夏陨,万物皆伤。由此观之:严刑以治国,犹任秋冬以成谷也。故法令者,治恶之具也,而非至治之风也。是以古者,明王茂其德教,而缓其刑罚也。网漏吞舟之鱼,而刑审于绳墨之外,及臻其末,而民莫犯禁也。”


          刑德第五十五


      大夫曰:“令者所以教民也,法者所以督奸也。令严而民慎,法设而奸禁。罔疏则兽失,法疏则罪漏。罪漏则民放佚而轻犯禁。故禁不必,怯夫徼幸;诛诚,跖、蹻不犯。是以古者作五刑,刻肌肤而民不踰矩。”

          文学曰:“道径众,人不知所由;法令众,民不知所辟。故王者之制法,昭乎如日月,故民不迷;旷乎若大路,故民不惑。幽隐远方,折乎知之,室女童妇,咸知所避。是以法令不犯,而狱犴不用也。昔秦法繁于秋荼,而网密于凝脂。然而上下相遁,奸伪萌生,有司治之,若救烂扑焦,而不能禁;非网疏而罪漏,礼义废而刑罚任也。方今律令百有余篇,文章繁,罪名重,郡国用之疑惑,或浅或深,自吏明习者,不知所处,而况愚民!律令尘蠹于栈阁,吏不能遍睹,而况于愚民乎!此断狱所以滋众,而民犯禁滋多也。‘宜犴宜狱,握粟出卜,自何能谷?’刺刑法繁也。亲服之属甚众,上杀下杀,而服不过五。五刑之属三千,上附下附,而罪不过五。故治民之道,务笃其教而已。”

      大夫曰:“文学言王者立法,旷若大路。今驰道不小也,而民公犯之,以其罚罪之轻也。千仞之高,人不轻凌,千钧之重,人不轻举。商君刑弃灰于道,而秦民治。故盗马者死,盗牛者加,所以重本而绝轻疾之资也。武兵名食,所以佐边而重武备也。盗伤与杀同罪,所以累其心而责其意也。犹鲁以楚师伐齐,而春秋恶之。故轻之为重,浅之为深,有缘而然。法之微者,固非众人之所知也。”

      文学曰:“诗云:‘周道如砥,其直如矢。’言其易也。‘君子所履,小人所视。’言其明也。故德明而易从,法约而易行今驰道经营陵陆,纡周天下,是以万里为民阱也。罻罗张而县其谷,辟陷设而当其蹊,矰弋饰而加其上,能勿离乎?聚其所欲,开其所利,仁义陵迟,能勿踰乎?故其末途,至于攻城入邑,损府库之金,盗宗庙之器,岂特千仞之高、千钧之重哉!管子曰:‘四维不张,虽皋陶不能为士。’故德教废而诈伪行,礼义坏而奸邪兴,言无仁义也。仁者,爱之效也;义者,事之宜也。故君子爱仁以及物,治近以及远。传曰:‘凡生之物,莫贵于人;人主之所贵,莫重于人。’故天之生万物以奉人也,主爱人以顺天也。闻以六畜禽兽养人,未闻以所养害人者也。鲁厩焚,孔子罢朝,问人不问马,贱畜而重人也。今盗马者罪死,盗牛者加。乘骑车马行驰道中,吏举苛而不止,以为盗马,而罪亦死。今伤人持其刀剑而亡,亦可谓盗武库兵而杀之乎?人主立法而民犯之,亦可以为逆而轻主约乎?深之可以死,轻之可以免,非法禁之意也。法者,缘人情而制,非设罪以陷人也。故春秋之治狱,论心定罪。志善而违于法者免,志恶而合于法者诛。今伤人未有所害,志不甚恶而合于法者,谓盗而伤人者耶?将执法者过耶?何于人心不厌也!古者,伤人有创者刑,盗有臧者罚,杀人者死。今取人兵刃以伤人,罪与杀人同,得无非其至意与?”  

          大夫俛仰未应对。

      御史曰:“执法者国之辔衔,刑罚者国之维楫也。故辔衔不饬,虽王良不能以致远;维楫不设,虽良工不能以绝水。韩子疾有国者不能明其法势,御其臣下,富国强兵,以制敌御难,惑于愚儒之文词,以疑贤士之谋,举浮淫之蠹,加之功实之上,而欲国之治,犹释阶而欲登高,无衔橛而御捍马也。今刑法设备,而民犹犯之,况无法乎?其乱必也!”

      文学曰:“辔衔者,御之具也,得良工而调。法势者,治之具也,得贤人而化。执辔非其人,则马奔驰。执轴非其人,则船覆伤。昔吴使宰嚭持轴而破其船,秦使赵高执辔而覆其车。今废仁义之术,而任刑名之徒,则复吴、秦之事也。夫为君者法三王,为相者法周公,为术者法孔子,此百世不易之道也。韩非非先王而不遵,舍正令而不从,卒蹈陷阱,身幽囚,客死于秦。夫不通大道而小辩,斯足以害其身而已。”


      申韩第五十六


          御史曰:“待周公而为相,则世无列国。待孔子而后学,则世无儒、墨。夫衣小缺,(心祭)裂可以补,而必待全匹而易之;政小缺,法令可以防,而必待雅、颂乃治之;是犹舍邻之医,而求俞跗而后治病,废污池之水,待江、海而后救火也。迂而不径,阙而无务,是以教令不从而治烦乱。夫善为政者,弊则补之,决则塞之,故吴子以法治楚、魏,申、商以法强秦、韩也。”  

          文学曰:“有国者选众而任贤,学者博览而就善,何必是周公、孔子!故曰法之而已。今商鞅反圣人之道,变乱秦俗,其后政耗乱而不能治,流失而不可复,愚人纵火于沛泽,不能复振;蜂虿螫人,放死不能息其毒也。烦而止之,躁而静之,上下劳扰,而乱益滋。故圣人教化,上与日月俱照,下与天地同流,岂曰小补之哉!”

      御史曰:“衣缺不补,则日以甚,防漏不塞,则日益滋。大河之始决于瓠子也,涓涓尔,及其卒,泛滥为中国害,菑梁、楚,破曹、卫,城郭坏沮,蓄积漂流,百姓木栖,千里无庐,令孤寡无所依,老弱无所归。故先帝闵悼其菑,亲省河堤,举禹之功,河流以复,曹、卫以宁。百姓戴其功,咏其德,歌‘宣房塞,万福来’焉,亦犹是也,如何勿小补哉!”

      文学曰:“河决若瓮口,而破千里,况礼决乎?其所害亦多矣!今断狱岁以万计,犯法兹多,其为菑岂特曹、卫哉!夫知塞宣房而福来,不知塞乱原而天下治也。周国用之,刑错不用,黎民若,四时各终其序,而天下不孤。颂曰:‘绥我眉寿,介以繁祉。’此夫为福,亦不小矣!诚信礼义如宣房,功业已立,垂拱无为,有司何补,法令何塞也?”  

          御史曰:“犀铫利鉏,五谷之利而间草之害也。明理正法,奸邪之所恶而良民之福也。故曲木恶直绳,奸邪恶正法。是以圣人审于是非,察于治乱,故设明法,陈严刑,防非矫邪,若隐括辅檠之正弧刺也。故水者火之备,法者止奸之禁也。无法势,虽贤人不能以为治;无甲兵,虽孙、吴不能以制敌。是以孔子倡以仁义而民从风,伯夷遁首阳而民不可化。”

      文学曰:“法能刑人而不能使人廉,能杀人而不能使人仁。所贵良医者,贵其审消息而退邪气也,非贵其下针石而钻肌肤也。所贵良吏者,贵其绝恶于未萌,使之不为,非贵其拘之囹圄而刑杀之也。今之所谓良吏者,文察则以祸其民,强力则以厉其下,不本法之所由生,而专己之残心,文诛假法,以陷不辜,累无罪,以子及父,以弟及兄,一人有罪,州里惊骇,十家奔亡,若痈疽之相泞,色淫之相连,一节动而百枝摇。诗云:‘舍彼有罪,沦胥以铺。’痛伤无罪而累也。非患铫耨之不利,患其舍草而芸苗也。非患无准平,患其舍枉而绳直也。故亲近为过不必诛,是锄不用也;疏远有功不必赏,是苗不养也。故世不患无法,而患无必行之法也。”


      周秦第五十七


          御史曰:“春秋无名号,谓之云盗,所以贱刑人而绝之人伦也。故君不臣,士不友,于闾里无所容。故民耻犯之。今不轨之民,犯公法以相宠,举弃其亲,不能伏节死理,遁逃相连,自陷于罪,其被刑戮,不亦宜乎?一室之中,父兄之际,若身体相属,一节动而知于心。故今自关内侯以下,比地于伍,居家相察,出入相司,父不教子,兄不正弟,舍是谁责乎?”

      文学曰:“古者,周其礼而明其教,礼周教明,不从者然后等之以刑,刑罚中,民不怨。故舜施四罪而天下咸服,诛不仁也。轻重各服其诛,刑必加而无赦,赦惟疑者。若此,则世安得不轨之人而罪之?今杀人者生,剽攻窃盗者富。故良民内解怠,辍耕而陨心。古者,君子不近刑人,刑人非人也,身放殛而辱后世,故无贤不肖,莫不耻也。今无行之人,贪利以陷其身,蒙戮辱而捐礼义,恒于苟生。何者?一日下蚕室,创未瘳,宿卫人主,出入宫殿,由得受奉禄,食大官享赐,身以尊荣,妻子获其饶。故或载卿相之列,就刀锯而不见闵,况众庶乎?夫何耻之有!今废其德教,而责之以礼义,是虐民也。春秋传曰:‘子有罪,执其父。臣有罪,执其君,听失之大者也。’今以子诛父,以弟诛兄,亲戚相坐,什伍相连,若引根本之及华叶,伤小指之累四体也。如此,则以有罪反诛无罪,无罪者寡矣。臧文仲治鲁,胜其盗而自矜。子贡曰:‘民将欺,而况盗乎!’故吏不以多断为良,医不以多刺为工。子产刑二人,杀一人,道不拾遗,而民无诬心。故为民父母,以养疾子,长恩厚而已。自首匿相坐之法立,骨肉之恩废,而刑罪多矣。父母之于子,虽有罪犹匿之,其不欲服罪尔。闻子为父隐,父为子隐,未闻父子之相坐也。闻兄弟缓追以免贼,未闻兄弟之相坐也。闻恶恶止其人,疾始而诛首恶,未闻什伍而相坐也。老子曰:‘上无欲而民朴,上无事而民自富。’君君臣臣,父父子子。比地何伍,而执政何责也?”  

          御史曰:“夫负千钧之重,以登无极之高,垂峻崖之峭谷,下临不测之渊,虽有庆忌之捷,贲、育之勇,莫不震慑悼栗者,知坠则身首肝脑涂山石也。故未尝灼而不敢握火者,见其有灼也。未尝伤而不敢握刃者,见其有伤也。彼以知为非,罪之必加,而戮及父兄,必惧而为善。故立法制辟,若临百仞之壑,握火蹈刃,则民畏忌,而无敢犯禁矣。慈母有败子,小不忍也。严家无悍虏,笃责急也。今不立严家之所以制下,而修慈母之所以败子,则惑矣。”

      文学曰:“纣为炮烙之刑,而秦有收帑之法,赵高以峻文决罪于内,百官以峭法断割于外,死者相枕席,刑者相望,百姓侧目重足,不寒而栗。诗云:‘谓天盖高,不敢不局。谓地盖厚,不敢不蹐。哀今之人,胡为虺蜥!’方此之时,岂特冒蹈刃哉?然父子相背,兄弟相嫚,至于骨肉相残,上下相杀。非刑轻而罚不必,令太严而仁恩不施也。故政宽则下亲其上,政严则民谋其主,晋厉以幽,二世见杀,恶在峻法之不犯,严家之无悍虏也?圣人知之,是以务和而不务威。故高皇帝约秦苛法,以慰怨毒之民,而长和睦之心,唯恐刑之重而德之薄也。是以恩施无穷,泽流后世。商鞅、吴起以秦、楚之法为轻而累之,上危其主,下没其身,或非特慈母乎!”


      诏圣第五十八


      御史曰:“夏后氏不倍言,殷誓,周盟,德信弥衰。无文、武之人,欲修其法,此殷、周之所以失势,而见夺于诸侯也。故衣弊而革才,法弊而更制。高皇帝时,天下初定,发德音,行一切之令,权也,非拨乱反正之常也。其后,法稍犯,不正于理。故奸萌而甫刑作,王道衰而诗刺彰,诸侯暴而春秋讥。夫少目之网不可以得鱼,三章之法不可以为治。故令不得不加,法不得不多。唐、虞画衣冠非阿,汤、武刻肌肤非故,时世不同,轻重之务异也。”  

          文学曰:“民之仰法,犹鱼之仰水,水清则静,浊则扰;扰则不安其居,静则乐其业;乐其业则富,富则仁生,赡则争止。是以成、康之世,赏无所施,法无所加。非可刑而不刑,民莫犯禁也;非可赏而不赏,民莫不仁也。若斯,则吏何事而理?今之治民者,若拙御之御马也,行则顿之,止则击之。身创于棰,吻伤于衔,求其无失,何可得乎?干溪之役土崩,梁氏内溃,严刑不能禁,峻法不能止。故罢马不畏鞭棰,罢民不畏刑法。虽曾而累之,其亡益乎?”  

          御史曰:“严墙三刃,楼季难之;山高干云,牧竖登之。故峻则楼季难三刃,陵夷则牧竖易山巅。夫烁金在炉,庄蹻不顾;钱刀在路,匹妇掇之;非匹妇贪而庄蹻廉也,轻重之制异,而利害之分明也。故法令可仰而不可踰,可临而不可入。诗云:‘不可暴虎,不敢冯河。’为其无益也。鲁好礼而有季、孟之难,燕哙好让而有子之之乱。礼让不足禁邪,而刑法可以止暴。明君据法,故能长制群下,而久守其国也。”

      文学曰:“古者,明其仁义之誓,使民不踰;不教而杀,是虐民也。与其刑不可踰,不若义之不可踰也。闻礼义行而刑罚中,未闻刑罚行而孝悌兴也。高墙狭基,不可立也。严刑峻法,不可久也。二世信赵高之计,渫笃责而任诛断,刑者半道,死者日积。杀民多者为忠,厉民悉者为能。百姓不胜其求,黔首不胜其刑,海内同忧而俱不聊生。故过任之事,父不得于子;无已之求,君不得于臣。死不再生,穷鼠啮狸,匹夫奔万乘,舍人折弓,陈胜、吴广是也。当此之时,天下俱起,四面而攻秦,闻不一期而社稷为墟,恶在其能长制群下,而久守其国也?”

      御史默然不对。

      大夫曰:“瞽师不知白黑而善闻言,儒者不知治世而善訾议。夫善言天者合之人,善言古者考之今。令何为施?法何为加?汤、武全肌骨而殷、周治,秦国用之,法弊而犯。二尺四寸之律,古今一也,或以治,或以乱。春秋原罪,甫刑制狱。今愿闻治乱之本,周、秦所以然乎?”

      文学曰:“春夏生长,圣人象而为令。秋冬杀藏,圣人则而为法。故令者教也,所以导民人;法者刑罚也,所以禁强暴也。二者,治乱之具,存亡之效也,在上所任。汤、武经礼义,明好恶,以道其民,刑罪未有所加,而民自行义,殷、周所以治也。上无德教,下无法则,任刑必诛,劓鼻盈蔂,断足盈车,举河以西,不足以受天下之徒,终而以亡者,秦王也。非二尺四寸之律异,所行反古而悖民心也。”  


          大论第五十九


      大夫曰:“呻吟槁简,诵死人之语,则有司不以文学。文学知狱之在廷后而不知其事,闻其事而不知其务。夫治民者,若大匠之斲,斧斤而行之,中绳则止。杜大夫、王中尉之等,绳之以法,断之以刑,然后寇止奸禁。故射者因槷,治者因法。虞、夏以文,殷、周以武,异时各有所施。今欲以敦朴之时,治抏弊之民,是犹迁延而拯溺,揖让而救火也。”

      文学曰:“文王兴而民好善,幽、厉兴而民好暴,非性之殊,风俗使然也。故商、周之所以昌,桀、纣之所以亡也,汤、武非得伯夷之民以治,桀、纣非得跖、蹻之民以乱也,故治乱不在于民。孔子曰:‘听讼吾犹人也,必也使无讼乎!’无讼者难,讼而听之易。夫不治其本而事其末,古之所谓愚,今之所谓智。以棰楚正乱,以刀笔正文,古之所谓贼,今之所谓贤也。”

      大夫曰:“俗非唐、虞之时,而世非许由之民,而欲废法以治,是犹不用隐括斧斤,欲挠曲直枉也。故为治者不待自善之民,为轮者不待自曲之木。往者,应少、伯正之属溃梁、楚,昆卢、徐谷之徒乱齐、赵,山东、关内暴徒,保人阻险。当此之时,不任斤斧,折之以武,而乃始设礼修文,有似穷医,欲以短针而攻疽,孔丘以礼说跖也。”

      文学曰:“残材木以成室屋者,非良匠也。残贼民人而欲治者,非良吏也。故公输子因木之宜,圣人不费民之性。是以斧斤简用,刑罚不任,政立而化成。扁鹊攻于凑理,绝邪气,故痈疽不得成形。圣人从事于未然,故乱原无由生。是以砭石藏而不施,法令设而不用。断已然,凿已发者,凡人也。治未形,睹未萌者,君子也。”

      大夫曰:“文学所称圣知者,孔子也,治鲁不遂,见逐于齐,不用于卫,遇围于匡,困于陈、蔡。夫知时不用犹说,强也;知困而不能已,贪也;不知见欺而往,愚也;困辱不能死,耻也。若此四者,庸民之所不为也,而况君子乎!商君以景监见,应侯以王稽进。故士因士,女因媒。至其亲显,非媒士之力。孔子不以因进见而能往者,非贤士才女也。”  

          文学曰:“孔子生于乱世,思尧、舜之道,东西南北,灼头濡足,庶几世主之悟。悠悠者皆是,君闇,大夫妒,孰合有媒?是以嫫母饰姿而矜夸,西子彷徨而无家。非不知穷厄而不见用,悼痛天下之祸,犹慈母之伏死子也,知其不可如何,然恶已。故适齐,景公欺之,适卫,灵公围,阳虎谤之,桓魋害之。夫欺害圣人者,愚惑也;伤毁圣人者,狂狡也。狡惑之人,非人也。夫何耻之有!孟子曰:‘观近臣者以所为主,观远臣者以其所主。’使圣人伪容苟合,不论行择友,则何以为孔子也!”

      大夫抚然内惭,四据而不言。

      当此之时,顺风承意之士如编,口张而不歙,舌举而不下,闇然而怀重负而见责。

      大夫曰︰“诺,胶车倏逢雨,请与诸生解。”  


          杂论第六十


      客曰:“余睹盐、铁之义,观乎公卿、文学、贤良之论,意指殊路,各有所出,或上仁义,或务权利。”

      “异哉吾所闻。周、秦粲然,皆有天下而南面焉,然安危长久殊世。始汝南朱子伯为予言:当此之时,豪俊并进,四方辐凑。贤良茂陵唐生、文学鲁国万生之伦,六十余人,咸聚阙庭,舒六艺之风,论太平之原。智者赞其虑,仁者明其施,勇者见其断,辩者陈其词。誾誾焉,侃侃焉,虽未能详备,斯可略观矣。然蔽于云雾,终废而不行,悲夫!公卿知任武可以辟地,而不知广德可以附远;知权利可以广用,而不知稼穑可以富国也。近者亲附,远者说德,则何为而不成,何求而不得?不出于斯路,而务畜利长威,岂不谬哉!中山刘子雍言王道,矫当世,复诸正,务在乎反本。直而不徼,切而不(火索),斌斌然斯可谓弘博君子矣。九江祝生奋由、路之意,推史鱼之节,发愤懑,刺讥公卿,介然直而不挠,可谓不畏强御矣。桑大夫据当世,合时变,推道术,尚权利,辟略小辩,虽非正法,然巨儒宿学恧然,不能自解,可谓博物通士矣。然摄卿相之位,不引准绳,以道化下,放于利末,不师始古。易曰:‘焚如弃如。’处非其位,行非其道,果陨其性,以及厥宗。车丞相即周、吕之列,当轴处中,括囊不言,容身而去,彼哉!彼哉!若夫群丞相、御史,不能正议,以辅宰相,成同类,长同行,阿意苟合,以说其上,斗筲之人,道谀之徒,何足算哉。


    🔲 ☆

    nvidia-smi工具详解及使用示例

    nvidia-smi(NVIDIA System Management Interface)是NVIDIA官方提供的GPU管理工具,提供管理和监控 GPU 的接口。其核心功能包括NVIDIA GPU运行状况、工作负载、硬件状态诊断和资源调度管理。

    核心功能

    功能模块具体能力适用场景
    实时监控显存占用、温度、功耗、时钟频率深度学习训练过程监控
    进程管理查看/终止占用GPU的进程资源泄漏应急处理
    计算模式控制切换默认/专属计算模式多任务并发调度
    ECC错误检测读取内存错误计数器硬件可靠性验证
    性能状态调节动态调整GPU功耗墙(P0-P12)能效比优化

    nvidia-smi输出字段解析

    执行 nvidia-smi 命令后,会看到类似下面的表格。

    +-----------------------------------------------------------------------------------------+
    | NVIDIA-SMI 580.95.05              Driver Version: 580.95.05      CUDA Version: 13.0     |
    |-----------------------------------------+------------------------+----------------------+
    | GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
    |                                         |                        |               MIG M. |
    |=========================================+========================+======================|
    |   0  NVIDIA B200                    On  |   00000000:51:00.0 Off |                    0 |
    | N/A   27C    P0            136W / 1000W |       0MiB / 183359MiB |      0%      Default |
    |                                         |                        |             Disabled |
    +-----------------------------------------+------------------------+----------------------+
    |   1  NVIDIA B200                    On  |   00000000:52:00.0 Off |                    0 |
    | N/A   25C    P0            140W / 1000W |       0MiB / 183359MiB |      0%      Default |
    |                                         |                        |             Disabled |
    +-----------------------------------------+------------------------+----------------------+
    |   2  NVIDIA B200                    On  |   00000000:62:00.0 Off |                    0 |
    | N/A   27C    P0            138W / 1000W |       0MiB / 183359MiB |      0%      Default |
    |                                         |                        |             Disabled |
    +-----------------------------------------+------------------------+----------------------+
    |   3  NVIDIA B200                    On  |   00000000:63:00.0 Off |                    0 |
    | N/A   26C    P0            138W / 1000W |       0MiB / 183359MiB |      0%      Default |
    |                                         |                        |             Disabled |
    +-----------------------------------------+------------------------+----------------------+
    |   4  NVIDIA B200                    On  |   00000000:75:00.0 Off |                    0 |
    | N/A   27C    P0            139W / 1000W |       0MiB / 183359MiB |      0%      Default |
    |                                         |                        |             Disabled |
    +-----------------------------------------+------------------------+----------------------+
    |   5  NVIDIA B200                    On  |   00000000:76:00.0 Off |                    0 |
    | N/A   25C    P0            140W / 1000W |       0MiB / 183359MiB |      0%      Default |
    |                                         |                        |             Disabled |
    +-----------------------------------------+------------------------+----------------------+
    |   6  NVIDIA B200                    On  |   00000000:86:00.0 Off |                    0 |
    | N/A   27C    P0            142W / 1000W |       0MiB / 183359MiB |      0%      Default |
    |                                         |                        |             Disabled |
    +-----------------------------------------+------------------------+----------------------+
    |   7  NVIDIA B200                    On  |   00000000:87:00.0 Off |                    0 |
    | N/A   26C    P0            138W / 1000W |       0MiB / 183359MiB |      0%      Default |
    |                                         |                        |             Disabled |
    +-----------------------------------------+------------------------+----------------------+
    
    +-----------------------------------------------------------------------------------------+
    | Processes:                                                                              |
    |  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
    |        ID   ID                                                               Usage      |
    +=========================================================================================+
    |    0   N/A  N/A   3085666      C   /home/anzhihe/chegva/.venv/bin/python       97757MiB |
    |    1   N/A  N/A   1742545      C   /home/anzhihe/chegva/.venv/bin/python3      97122MiB |
    |    2   N/A  N/A   3151439      C   /home/anzhihe/chegva/.venv/bin/python3.12   12850MiB |
    |    2   N/A  N/A   3151917      C   /home/anzhihe/chegva/.venv/bin/python       95683MiB |
    +-----------------------------------------------------------------------------------------+

    nvidia-smi 的默认输出非常经典,可以看作由两个主要部分构成:上方的 GPU状态总览表格 和下方的 Processes(进程信息)表格

    上方的 GPU状态总览表格总结了每个物理GPU的核心实时指标,是快速监控的关键。

    下方的 Processes(进程信息)表格,显示了正在使用GPU资源的各个进程的详细信息,在多用户环境或排查显存占用时极为有用。

    各字段详细含义如下:

    字段类别字段名称含义与解读
    标题与版本NVIDIA-SMINVIDIA系统管理接口工具本身。
    Driver Version已安装的NVIDIA驱动程序版本。运行CUDA程序需确保其与CUDA Toolkit版本兼容。
    CUDA Version此驱动程序支持的最高CUDA运行时版本
    GPU设备信息GPUGPU的索引编号,从0开始。在多卡系统中用于指定设备。
    NameGPU的具体型号(如RTX 4090, Tesla T4)。
    Persistence-M持久化模式On表示启用,GPU在无负载时也保持上电状态,可减少后续任务启动延迟,但会消耗更多待机功耗。Off表示关闭。
    Bus-IdPCI总线标识符,格式为域:总线:设备.功能,用于硬件定位。
    运行状态Fan风扇转速,通常以百分比显示。部分服务器GPU可能显示为N/A
    TempGPU核心温度,单位摄氏度。理想范围是低于85°C。长期超过此温度可能因热保护导致性能下降(降频)。
    Perf性能状态,从P0(最高)到P12(最低)。P0表示正在以最大性能运行。
    Pwr:Usage/Cap功耗Usage实时功耗CapGPU设定的功耗上限(TDP),单位瓦特(W)。
    显存与计算Memory-Usage显存使用量,格式为已使用量 / 总量。监视此值有助于避免因显存不足(OOM)导致程序崩溃。
    GPU-UtilGPU计算核心利用率,以百分比表示。高负载任务(如模型训练)下通常较高。持续过低(如<30%)可能表示存在CPU或数据I/O瓶颈。
    Compute M.计算模式Default允许多个进程共享GPU;Exclusive_Process表示独占模式,同一时间仅允许一个进程使用。
    进程信息GPU该进程正在使用的GPU索引。如果进程使用了多张卡,这里会列出多张卡的ID。
    GI IDGPU Instance ID(GPU实例ID)这是MIG功能在物理GPU上划分出的“GPU实例”的编号。可以将其理解为一台物理服务器中的第一层虚拟化分区
    CI IDCompute Instance ID(计算实例ID)这是在一个GPU实例内部,进一步划分出的“计算实例”的编号。它是第二层虚拟化分区,直接用于运行具体的计算任务。
    PID进程的系统ID。这是唯一标识,可用于后续的监控或终止操作 (kill命令)。
    Type进程类型。最常见的是 C (Compute,计算进程,如CUDA程序) 和 G (Graphics,图形进程)。AI任务通常是 C
    Process name进程的名称。例如 pythontorch 等,能快速定位是哪个程序。
    GPU Memory Usage该进程当前占用的GPU显存量。注意:此值不等于整个GPU的总显存使用量("Memory-Usage"),后者是所有进程占用之和。

    请注意:不同厂家和版本的工具,其命令和输出字段名称可能不同。例如,华为的相应工具为 npu-smi,阿里的相应工具为 ppu-smi,英特尔数据中心GPU的工具则为 xpu-smi



    MIG解释及GI、CI、PID之间关系

    MIG 是 Multi-Instance GPU 的缩写,是NVIDIA在Ampere架构及之后的数据中心GPU(如A100, H100)上引入的一项关键功能。它允许将一块物理GPU安全地分割成多个独立的、具备各自显存和计算核心的“小GPU”(即GPU实例),并分配给不同的用户或作业,从而实现硬件级的资源隔离、安全隔离和更精细的资源利用

    GI、CI、PID这三个字段标识了进程在 MIG虚拟化架构中的精确位置,其层级关系为:
    物理GPU → GI (GPU实例) → CI (计算实例) → 进程 (PID)

    当一个物理GPU 未启用MIG 或进程不在MIG实例中运行时,GI 和 CI 字段通常会显示为 N/A 或 -,这是正常现象。只有在使用了支持MIG的GPU(如A100)并启用了该功能后,才会在进程信息中看到具体的GICI编号

    常用命令与实战技巧

    除了基础的 nvidia-smi,以下命令能更好地监控和管理GPU:

    • 实时监控

      • 使用 nvidia-smi -l 2 可以每2秒自动刷新一次状态

      • 使用 watch -n 1 nvidia-smi 可以实现更灵活的实时监控

    • 查询详细信息

      • 使用 nvidia-smi -q 会显示全部详细信息,内容非常全面

      • 可以配合 -d 参数指定查询类别,如 nvidia-smi -q -d TEMPERATURE,POWER 只查看温度和功耗详情

      • 使用 -i 参数指定GPU索引,如 nvidia-smi -i 0 -q 只查询0号GPU的详细信息

    • 进程管理

      • 使用 nvidia-smi -q -d PROCESSES 可以查看占用GPU的具体进程、PID及其显存使用量

    进阶管理功能

    nvidia-smi 还支持一些直接影响GPU运行状态的操作(通常需要管理员权限):

    • 计算模式切换sudo nvidia-smi -i <gpu_id> -c <mode> 可以切换GPU的计算模式。例如,-c 3 设置为独占进程模式

    • 设置持久化模式sudo nvidia-smi -pm 1 可以启用持久化模式,可能减少应用启动延迟

    • 设置功耗上限sudo nvidia-smi -pl <功率值(瓦)> 可以为GPU设置新的功耗上限

    典型问题排查思路

    当遇到性能问题时,可以按以下步骤排查:

    1. GPU利用率低

    • 现象GPU-Util 持续低于30%

    • 可能原因:CPU数据预处理成为瓶颈;批处理大小(Batch Size)设置过小;程序存在同步等待。

    • 排查:检查CPU使用率;使用 nvidia-smi -q -d PROCESSES 确认GPU上是否有任务运行

  • 显存不足

    • 现象:程序报错“CUDA out of memory”

    • 可能原因:模型或批处理大小过大;存在显存泄漏(显存占用只增不减)。

    • 排查:使用 nvidia-smi 观察 Memory-Usage;尝试减小批处理大小;检查代码确保显存及时释放

  • GPU温度过高

    • 现象Temp 持续超过85°C

    • 可能原因:散热风扇故障或积灰;机箱风道不畅;负载持续满载。

    • 排查:清洁散热器;改善机箱通风;确保风扇正常运转

    总结

    • 核心监控指标:重点关注 GPU-Util(利用率)Memory-Usage(显存)Temp(温度) 和 Power(功耗),它们是判断GPU工作状态和性能瓶颈的关键

    • 常用命令:基础状态用 nvidia-smi,详细查询用 nvidia-smi -q,实时监控用 nvidia-smi -l 2 或 watch 命令

    • 更多帮助:在终端输入 nvidia-smi -h 可查看完整的命令帮助。


    参考:


    🔲 ☆

    Kubernetes PV数据卷缩容方案及统计PV容量

    在 Kubernetes 中,直接对 Persistent Volume (PV) 进行容量缩容(减小容量)通常是不被支持的。这主要是出于数据安全的考虑,因为贸然缩小底层存储设备可能会破坏数据。

    理解 PV 缩容的限制

    Kubernetes 及其存储生态系统在设计上就偏向于扩容,对缩容则有严格限制,主要原因如下:

    • 数据安全风险:缩容操作可能导致数据被截断或丢失。如果新的容量小于已存储的数据量,后果不堪设想。

    • 底层存储限制:许多底层存储系统(如 AWS EBS、Longhorn 等)并不支持在线缩小卷容量。例如,LVM 的 pvresize 命令也会拒绝缩小已分配空间的物理卷。

    • Kubernetes 机制限制:Kubernetes 的 allowVolumeExpansion 配置项仅控制扩容,并不会开启缩容功能。

    替代方案与变通方法

    虽然不能直接缩容,但是可以考虑以下替代方案来管理存储资源:

    方案核心步骤优点注意事项
    重建 PV 和 PVC1. 备份数据
    2. 创建新的、容量更小的 PV 和 PVC。
    3. 将数据从旧 PV 迁移到新 PV。
    4. 更新 Pod 配置以使用新 PVC,并删除旧资源。
    可靠且通用,适用于大多数不支持直接缩容的场景。过程繁琐,涉及业务中断数据迁移
    调整存储配额通过 Kubernetes 的 ResourceQuota 来限制命名空间未来的存储请求总量,而不是缩小已有卷。无数据风险,有效预防未来存储资源的过度使用。无法释放已分配的存储空间
    利用存储供应商特性某些云厂商的存储服务(如 NetApp Trident)可能通过精简配置(Thin Provisioning)等方式,在逻辑上限制容量使用,而无需物理缩容高效利用存储资源依赖特定存储后端,并非普适性解决方案。

    总而言之,在 Kubernetes 中直接对 PV 进行缩容操作是不可行的。当需要减少 PV 容量时,数据迁移和PV/PVC重建是目前最主流和安全的做法。通过创建一个容量更小的新PV,然后迁移数据,可以实现存储空间的"缩容"。这个过程的核心步骤包括:准备新PV、迁移数据、更新应用指向新存储,以及清理旧资源。

    为了更安全地进行操作,请务必先留意以下关键风险点和前提:

    关键项目重要说明
    数据备份务必先备份原始数据,以防迁移过程中发生意外丢失。
    业务中断数据迁移通常需要停止相关Pod,请规划在业务低峰期进行。
    存储类型确保Kubernetes集群和存储系统支持动态供应或静态PV创建。
    应用兼容性确保应用能够适应存储卷的切换。

    详细操作步骤

    1、确认当前PV/PVC状态并备份数据
    执行以下命令,记录当前PV(Persistent Volume)和PVC(Persistent Volume Claim)的详细信息,特别是当前的存储容量和访问模式。

    kubectl get pv <old-pv-name> -o yaml
    kubectl get pvc <old-pvc-name> -n <namespace> -o yaml

    务必确保已经对重要数据进行了可靠备份

    2、停止使用旧存储的Pod
    为了避免数据不一致,需要先停止所有正在使用该PVC的Pod。具体的操作方法取决于工作负载类型:

      • 如果是Deployment,可以将其副本数缩容到0:kubectl scale deployment <deployment-name> --replicas=0 -n <namespace>

      • 如果是StatefulSet,同样缩容到0:kubectl scale statefulset <statefulset-name> --replicas=0 -n <namespace>

      • 如果是直接创建的Pod,则直接删除:kubectl delete pod <pod-name> -n <namespace>

      3、创建新的、容量更小的PV
      根据存储供应方式,选择静态或者动态方式创建新PV。

      • 静态供应:编写新的PV YAML文件,注意capacity.storage字段设置为目标缩容容量。

      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: new-small-pv  # 给新PV起个名字
      spec:
        capacity:
          storage: 5Gi  # 这里设置你想要的、更小的容量
        accessModes:
          - ReadWriteOnce  # 根据你的需求设置访问模式
        persistentVolumeReclaimPolicy: Retain  # 建议先设置为Retain
        storageClassName: manual  # 指定存储类
        # ... 其他必要字段根据你的存储系统来定

      然后应用这个YAML文件:kubectl apply -f new-pv.yaml

      • 动态供应:创建一个新的PVC,其spec.resources.requests.storage字段指定为缩容后的容量,并确保其绑定的StorageClass能正确工作。Kubernetes会自动为其创建并绑定一个符合要求的PV。

      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: new-small-pvc
        namespace: your-namespace
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 5Gi  # 指定缩容后的容量
        storageClassName: standard  # 指定能动态创建PV的StorageClass

      应用这个YAML文件:kubectl apply -f new-pvc.yaml

      4、将数据从旧PV迁移到新PV
      这是最关键的一步。常见的方法有:

        • 使用kubectl cp命令:如果PV支持文件系统模式,可以启动一个临时的Pod挂载旧PVC,将数据拷贝到本地,然后另一个临时Pod挂载新PVC,再将数据从本地拷贝过去。

        • 使用rsync工具:对于大量数据,rsync效率更高。可能需要启动一个包含rsync的临时Pod来完成。

        • 存储系统快照/克隆:部分高级存储系统(如Longhorn, Portworx)自身支持卷的快照和克隆功能,可以利用这些功能来加速数据迁移。

        5、修改Pod配置,指向新的PV/PVC
        数据迁移并验证无误后,更新Pod配置模板(例如Deployment或StatefulSet的YAML文件),将其volumes部分指向新的PVC名称

        volumes:
        - name: my-storage
          persistentVolumeClaim:
            claimName: new-small-pvc  # 这里改为新PVC的名字

        然后应用这个更新:kubectl apply -f your-app.yaml

        6、重启应用Pod
        根据第二步中停止Pod的方式,重新启动应用。

          • 如果是Deployment,将副本数扩展回目标数量:kubectl scale deployment <deployment-name> --replicas=<target-replicas> -n <namespace>

          • 如果是StatefulSet,同样操作:kubectl scale statefulset <statefulset-name> --replicas=<target-replicas> -n <namespace>

          • 如果是直接创建的Pod,则重新创建。

          7、验证应用和数据
          密切观察新Pod的启动日志和行为,确认应用能够正常访问新PV上的数据,并且功能符合预期。
          可以再次使用kubectl get pvkubectl get pvc命令,确认新的PVC new-small-pvc已经处于Bound状态,并且绑定到了正确的PV上。

          8、谨慎清理旧PV/PVC
          在确认新环境稳定运行一段时间(例如24小时)后,并且确定不再需要旧数据时,再考虑清理旧的PV和PVC。
          注意:清理操作是不可逆的,请再次确认数据安全。

          kubectl delete pvc <old-pvc-name> -n <namespace>
          kubectl delete pv <old-pv-name>

          补充建议

          • 预防胜于治疗:在Kubernetes命名空间中,可以通过创建ResourceQuotaLimitRange资源来预防单个PVC请求过大的存储空间,从源头控制存储使用。

          • 理解回收策略:在删除旧PV时,务必了解其persistentVolumeReclaimPolicy(回收策略)。设置为Retain时,删除PVC后PV及相关后端存储资源会被保留;设置为Delete时,则可能会被自动清理。


          K8s统计PV实际使用量

          在PV卷缩容替代方案实施前,我们通常会统计Kubernetes集群中PV的总使用量,需要明白一点:kubectl get pv 命令本身无法直接提供PV的实际使用量,它主要显示的是PV的配置容量和状态信息。要获取PV的实际使用量,还需要借助其他方法。下面梳理几种可行的方案。

          快速查看PV使用情况

          如果想快速查看单个PV或PVC的实时使用情况,可以尝试以下方法:

          方法操作说明
          进入Pod查看1. 找到挂载目标PV的Pod:kubectl get pods -o wide --all-namespaces
          2. 进入Pod并查看挂载点使用情况:kubectl exec -it <pod_name> -- df -h 或 `kubectl exec -it <pod_name> -- df -h
          grep <mount_point>`优点:简单直接,无需额外工具。
          局限:需要Pod处于运行状态,且只能查看单个Pod挂载的PV情况。
          使用第三方工具安装 pvcpie 工具:pip install pvcpie,然后执行 pvcpie 命令一个专门用于获取集群中PVC使用信息的Python工具。

          搭建监控系统获取全面数据

          对于生产环境或需要长期、全面监控的场景,建议搭建监控系统:

          1.部署Metrics Server与监控工具

            • 确保集群已安装 Metrics Server

            • 部署 Prometheus 来收集和存储指标数据

            • 部署 Grafana 进行数据可视化

            2.利用Prometheus指标查询
            Prometheus可以收集PV的实际使用量指标,例如 kubelet_volume_stats_used_bytes (卷中已使用的字节数) 和 kubelet_volume_stats_capacity_bytes (卷的总容量字节数)。可以使用PromQL查询语言进行统计。例如,查询所有PV的已用空间和容量:

            kubelet_volume_stats_used_bytes
            kubelet_volume_stats_capacity_bytes

            3.配置Grafana仪表板

            在Grafana中,可以基于Prometheus的数据源创建仪表板,通过图表直观展示PV的总使用量、使用率趋势等。

            云平台或特定发行版的集成监控

            如果使用的是特定云平台的Kubernetes服务(如Azure AKS)或特定发行版(如Red Hat OpenShift),它们通常提供了集成的监控方案:

            • Azure AKS:Azure Monitor的容器见解功能可以自动收集PV使用情况指标(如 pvUsedBytes),并提供了预配置的工作簿进行查看。

            • Red Hat OpenShift:集成了Prometheus,可以直接使用相关的PV监控指标

            最佳实践与建议

            • 明确需求:根据需求(临时检查 vs. 长期监控)选择合适的方法。

            • 数据准确性:请注意,某些监控工具(如 kubectl top)提供的指标可能专为Kubernetes自动扩缩容决策优化,与操作系统工具(如 top)的结果可能不完全一致。

            • 配置告警:在监控系统基础上,为PV使用率配置告警,以便在空间不足时及时收到通知。

            统计所有PV的配置容量总量,用kubectl get pv命令结合一些简单的文本处理工具就能做到。下面是一个汇总表格,列出了几种常用的方法:

            方法命令特点
            JSONPath提取kubectl get pv -o jsonpath='{.items[*].spec.capacity.storage}'直接提取容量值,但结果在同一行,需后续处理
            JSONPath循环kubectl get pv -o jsonpath='{range .items[*]}{.spec.capacity.storage}{"\n"}{end}'每个PV容量单独一行,方便后续处理
            自定义列kubectl get pv -o custom-columns=NAME:.metadata.name,CAPACITY:.spec.capacity.storage输出表格,直观显示每个PV的容量
            自定义列(仅容量)kubectl get pv -o custom-columns=CAPACITY:.spec.capacity.storage --no-headers仅输出容量列,无表头,适合直接处理

            重要提醒

            • 配置容量 vs 实际使用量kubectl get pv命令显示的是PV的配置容量(申请或初始设置的大小),而不是当前的实际数据使用量。要查看实际使用量,通常需要进入Pod内部使用df -h等命令,或借助集群监控系统(如Prometheus)。

            • 单位一致性:确保所有PV的容量单位一致(例如,都是Gi或都是Mi),或者在处理时进行了适当的单位转换,否则求和结果可能不准确。

            • 动态供应PV:对于通过StorageClass动态供应的PV,其配置容量通常由对应的PersistentVolumeClaim (PVC) 指定。

            K8s统计PV配置容量

            当PV的容量单位不一致时(比如同时存在Gi、Ki、Mi等),需要先统一单位再累加。以下是几种处理这种情况的方法:

            方法一:使用awk进行单位转换和累加

            kubectl get pv -o custom-columns=CAPACITY:.spec.capacity.storage --no-headers | awk '
            {
                # 提取数字和单位
                if ($1 ~ /Gi$/) {
                    gsub(/Gi/, "", $1)
                    sum += $1 * 1024 * 1024  # Gi → Ki
                }
                else if ($1 ~ /Mi$/) {
                    gsub(/Mi/, "", $1)
                    sum += $1 * 1024  # Mi → Ki
                }
                else if ($1 ~ /Ki$/) {
                    gsub(/Ki/, "", $1)
                    sum += $1  # Ki保持不变
                }
                else if ($1 ~ /G$/) {
                    gsub(/G/, "", $1)
                    sum += $1 * 1000 * 1000  # G → K (十进制)
                }
                else if ($1 ~ /M$/) {
                    gsub(/M/, "", $1)
                    sum += $1 * 1000  # M → K (十进制)
                }
                else if ($1 ~ /K$/) {
                    gsub(/K/, "", $1)
                    sum += $1  # K保持不变
                }
                else {
                    # 没有单位,假设是字节
                    sum += $1 / 1024  # 字节 → Ki
                }
            }
            END {
                # 输出结果,可以选择合适的单位
                if (sum >= 1024*1024*1024) {
                    printf "总容量: %.2f Ti\n", sum / (1024*1024*1024)
                } else if (sum >= 1024*1024) {
                    printf "总容量: %.2f Gi\n", sum / (1024*1024)
                } else if (sum >= 1024) {
                    printf "总容量: %.2f Mi\n", sum / 1024
                } else {
                    printf "总容量: %.2f Ki\n", sum
                }
            }'

            方法二:使用jq进行更精确的处理

            kubectl get pv -o json | jq '
            [.items[].spec.capacity.storage | 
             capture("(?<value>[0-9.]+)(?<unit>[A-Za-z]+)") |
             {
               value: (.value | tonumber),
               factor: (if .unit == "Ti" then 1024*1024*1024*1024
                       elif .unit == "Gi" then 1024*1024*1024
                       elif .unit == "Mi" then 1024*1024
                       elif .unit == "Ki" then 1024
                       elif .unit == "T" then 1000*1000*1000*1000
                       elif .unit == "G" then 1000*1000*1000
                       elif .unit == "M" then 1000*1000
                       elif .unit == "K" then 1000
                       else 1 end)
             } | .value * .factor] | add' | awk '
            {
                total_ki = $1 / 1024  # 转换为KiB基数
                if (total_ki >= 1024*1024*1024) {
                    printf "总容量: %.2f Ti\n", total_ki / (1024*1024*1024)
                } else if (total_ki >= 1024*1024) {
                    printf "总容量: %.2f Gi\n", total_ki / (1024*1024)
                } else if (total_ki >= 1024) {
                    printf "总容量: %.2f Mi\n", total_ki / 1024
                } else {
                    printf "总容量: %.2f Ki\n", total_ki
                }
            }'

            方法三:简化的单位转换脚本

            如果经常需要这个功能,可以创建一个可重用的脚本:

            #!/bin/bash
            # pv-total-capacity.sh
            
            calculate_pv_capacity() {
                kubectl get pv -o custom-columns=CAPACITY:.spec.capacity.storage --no-headers | awk '
                function to_kib(value, unit) {
                    switch(unit) {
                        case "Ti": return value * 1024 * 1024 * 1024 * 1024
                        case "Gi": return value * 1024 * 1024 * 1024
                        case "Mi": return value * 1024 * 1024
                        case "Ki": return value * 1024
                        case "T": return value * 1000 * 1000 * 1000 * 1000
                        case "G": return value * 1000 * 1000 * 1000
                        case "M": return value * 1000 * 1000
                        case "K": return value * 1000
                        default: return value  # 假设已经是字节
                    }
                }
                
                {
                    if (match($0, /([0-9.]+)([A-Za-z]*)/, parts)) {
                        value = parts[1]
                        unit = parts[2]
                        sum_kib += to_kib(value, unit) / 1024
                    }
                }
                END {
                    # 输出各种单位的表示
                    printf "总容量统计:\n"
                    printf "  %d Bytes\n", sum_kib * 1024
                    printf "  %.2f KiB\n", sum_kib
                    printf "  %.2f MiB\n", sum_kib / 1024
                    printf "  %.2f GiB\n", sum_kib / (1024*1024)
                    printf "  %.2f TiB\n", sum_kib / (1024*1024*1024)
                }'
            }
            
            calculate_pv_capacity

            使用建议

            1. 推荐使用方法一的awk脚本,它简单且功能完备

            2. 如果环境中有jq工具,方法二可以提供更精确的解析

            3. 对于生产环境,建议将方法三保存为脚本文件,方便重复使用

            这些方法都能正确处理混合单位的情况,并输出易于理解的总容量统计结果。可以根据实际需求选择最适合的方法。

            参考:Kubernetes 环境下华为云盘与 PV 数据目录缩容方案分析与实施

            🔲 ☆

            易经六十四卦Unicode符号表

            Yijing Hexagram Symbols

            U+4DC0 – U+4DFF   (19904–19967)

            Character
            (decimal)
            DecimalCharacter
            (hex)
            HexName
            199044DC0HEXAGRAM FOR THE CREATIVE HEAVEN
            199054DC1HEXAGRAM FOR THE RECEPTIVE EARTH
            199064DC2HEXAGRAM FOR DIFFICULTY AT THE BEGINNING
            199074DC3HEXAGRAM FOR YOUTHFUL FOLLY
            199084DC4HEXAGRAM FOR WAITING
            199094DC5HEXAGRAM FOR CONFLICT
            199104DC6HEXAGRAM FOR THE ARMY
            199114DC7HEXAGRAM FOR HOLDING TOGETHER
            199124DC8HEXAGRAM FOR SMALL TAMING
            199134DC9HEXAGRAM FOR TREADING
            199144DCAHEXAGRAM FOR PEACE
            199154DCBHEXAGRAM FOR STANDSTILL
            199164DCCHEXAGRAM FOR FELLOWSHIP
            199174DCDHEXAGRAM FOR GREAT POSSESSION
            199184DCEHEXAGRAM FOR MODESTY
            199194DCFHEXAGRAM FOR ENTHUSIASM
            199204DD0HEXAGRAM FOR FOLLOWING
            199214DD1HEXAGRAM FOR WORK ON THE DECAYED
            199224DD2HEXAGRAM FOR APPROACH
            199234DD3HEXAGRAM FOR CONTEMPLATION
            199244DD4HEXAGRAM FOR BITING THROUGH
            199254DD5HEXAGRAM FOR GRACE
            199264DD6HEXAGRAM FOR SPLITTING APART
            199274DD7HEXAGRAM FOR RETURN
            199284DD8HEXAGRAM FOR INNOCENCE
            199294DD9HEXAGRAM FOR GREAT TAMING
            199304DDAHEXAGRAM FOR MOUTH CORNERS
            199314DDBHEXAGRAM FOR GREAT PREPONDERANCE
            199324DDCHEXAGRAM FOR THE ABYSMAL WATER
            199334DDDHEXAGRAM FOR THE CLINGING FIRE
            199344DDEHEXAGRAM FOR INFLUENCE
            199354DDFHEXAGRAM FOR DURATION
            199364DE0HEXAGRAM FOR RETREAT
            199374DE1HEXAGRAM FOR GREAT POWER
            199384DE2HEXAGRAM FOR PROGRESS
            199394DE3HEXAGRAM FOR DARKENING OF THE LIGHT
            199404DE4HEXAGRAM FOR THE FAMILY
            199414DE5HEXAGRAM FOR OPPOSITION
            199424DE6HEXAGRAM FOR OBSTRUCTION
            199434DE7HEXAGRAM FOR DELIVERANCE
            199444DE8HEXAGRAM FOR DECREASE
            199454DE9HEXAGRAM FOR INCREASE
            199464DEAHEXAGRAM FOR BREAKTHROUGH
            199474DEBHEXAGRAM FOR COMING TO MEET
            199484DECHEXAGRAM FOR GATHERING TOGETHER
            199494DEDHEXAGRAM FOR PUSHING UPWARD
            199504DEEHEXAGRAM FOR OPPRESSION
            199514DEFHEXAGRAM FOR THE WELL
            199524DF0HEXAGRAM FOR REVOLUTION
            199534DF1HEXAGRAM FOR THE CAULDRON
            199544DF2HEXAGRAM FOR THE AROUSING THUNDER
            199554DF3HEXAGRAM FOR THE KEEPING STILL MOUNTAIN
            199564DF4HEXAGRAM FOR DEVELOPMENT
            199574DF5HEXAGRAM FOR THE MARRYING MAIDEN
            199584DF6HEXAGRAM FOR ABUNDANCE
            199594DF7HEXAGRAM FOR THE WANDERER
            199604DF8HEXAGRAM FOR THE GENTLE WIND
            199614DF9HEXAGRAM FOR THE JOYOUS LAKE
            199624DFAHEXAGRAM FOR DISPERSION
            199634DFBHEXAGRAM FOR LIMITATION
            199644DFCHEXAGRAM FOR INNER TRUTH
            199654DFDHEXAGRAM FOR SMALL PREPONDERANCE
            199664DFEHEXAGRAM FOR AFTER COMPLETION
            ䷿19967䷿4DFFHEXAGRAM FOR BEFORE COMPLETION

            在 CMD 或 PowerShell 中输出

            六十四卦的 Unicode 范围是 U+4DC0 到 U+4DFF

            (1)使用 Python 输出

            # 打印所有六十四卦
            for i in range(0x4DC0, 0x4E00):
                print(chr(i), end=" ")
            
            # 使用ipython                                                                                                     
            $> ipython
            
            In [1]: # 打印所有六十四卦
               ...: for i in range(0x4DC0, 0x4E00):
               ...:     print(chr(i), end=" ")
               ...:
            ䷀ ䷁ ䷂ ䷃ ䷄ ䷅ ䷆ ䷇ ䷈ ䷉ ䷊ ䷋ ䷌ ䷍ ䷎ ䷏ ䷐ ䷑ ䷒ ䷓ ䷔ ䷕ ䷖ ䷗ ䷘ ䷙ ䷚ ䷛ ䷜ ䷝ ䷞ ䷟ ䷠ ䷡ ䷢ ䷣ ䷤ ䷥ ䷦ ䷧ ䷨ ䷩ ䷪ ䷫ ䷬ ䷭ ䷮ ䷯ ䷰ ䷱ ䷲ ䷳ ䷴ ䷵ ䷶ ䷷ ䷸ ䷹ ䷺ ䷻ ䷼ ䷽ ䷾ ䷿

            运行方式

            1. 打开 CMD 或 PowerShell

            2. 输入 python(需提前安装 Python),然后粘贴代码运行。

            3. 输入 ipython(需提前安装 ipython),然后粘贴代码运行。

            (2)使用 PowerShell 输出

            # 输出前10个卦象
            1..10 | ForEach-Object { [char](0x4DBF + $_) }

            image.png

            运行方式

            1. 打开 PowerShell

            2. 粘贴代码并回车。

            (3)使用 JavaScript 输出

            在 JavaScript 中动态生成:

            <!DOCTYPE html>
            <html>
            	<head>
            	    <meta charset="UTF-8">
            	    <title></title>
            	</head>
            	<body>
            	    <script>
            		let hexagrams = "";
            		for (let i = 0x4DC0; i <= 0x4DFF; i++) {
            			hexagrams += String.fromCodePoint(i) + " ";
            		}
            		alert(hexagrams); // 输出所有六十四卦
            		//console.log(hexagrams);
            	    </script>
            	</body>
            </html>

            image.png

            参考:


            🔲 ☆

            从0开始学微服务

            单体应用

            单体应用:LAMP(Linux + Apache + MySQL + PHP)和MVC(Spring + iBatis/Hibernate + Tomcat)

            然而随着业务规模的不断扩大,团队开发人员的不断扩张,单体应用架构就会开始出现问题。经历过业务和团队快速增长的同学都会对此深有感触。大概会有以下几个方面的问题。

            • 部署效率低下。当单体应用的代码越来越多,依赖的资源越来越多时,应用编译打包、部署测试一次,甚至需要10分钟以上。这也经常被新加入的同学吐槽说,部署测试一次的时间,都可以去楼下喝杯咖啡了。

            • 团队协作开发成本高。以我的经验,早期在团队开发人员只有两三个人的时候,协作修改代码,最后合并到同一个master分支,然后打包部署,尚且可控。但是一旦团队人员扩张,超过5人修改代码,然后一起打包部署,测试阶段只要有一块功能有问题,就得重新编译打包部署,然后重新预览测试,所有相关的开发人员又都得参与其中,效率低下,开发成本极高。

            • 系统高可用性差。因为所有的功能开发最后都部署到同一个WAR包里,运行在同一个Tomcat进程之中,一旦某一功能涉及的代码或者资源有问题,那就会影响整个WAR包中部署的功能。比如我经常遇到的一个问题,某段代码不断在内存中创建大对象,并且没有回收,部署到线上运行一段时间后,就会造成JVM内存泄露,异常退出,那么部署在同一个JVM进程中的所有服务都不可用,后果十分严重。

            • 线上发布变慢。特别是对于Java应用来说,一旦代码膨胀,服务启动的时间就会变长,有些甚至超过10分钟以上,如果机器规模超过100台以上,假设每次发布的步长为10%,单次发布需要就需要100分钟之久。因此,急需一种方法能够将应用的不同模块的解耦,降低开发和部署成本。

            服务化

            用通俗的话来讲,服务化就是把传统的单机应用中通过JAR包依赖产生的本地方法调用,改造成通过RPC接口产生的远程方法调用。一般在编写业务代码时,对于一些通用的业务逻辑,把它抽象并独立成为专门的模块,因为这对于代码复用和业务理解都大有裨益。

            通过服务化,可以解决单体应用膨胀、团队开发耦合度高、协作效率低下的问题。

            服务化拆分

            从我所经历过的多个项目来看,项目第一阶段的主要目标是快速开发和验证想法,证明产品思路是否可行。这个阶段功能设计一般不会太复杂,开发采取快速迭代的方式,架构也不适合过度设计。所以将所有功能打包部署在一起,集中地进行开发、测试和运维,对于项目起步阶段,是最高效也是最节省成本的方式。当可行性验证通过,功能进一步迭代,就可以加入越来越多的新特性。

            比如做一个社交App,初期为了快速上线,验证可行性,可以只开发首页信息流、评论等基本功能。产品上线后,经过一段时间的运营,用户开始逐步增多,可行性验证通过,下一阶段就需要进一步增加更多的新特性来吸引更多的目标用户,比如再给这个社交App添加个人主页显示、消息通知等功能。

            一般情况下,这个时候就需要大规模地扩张开发人员,以支撑多个功能的开发。如果这个时候继续采用单体应用架构,多个功能模块混杂在一起开发、测试和部署的话,就会导致不同功能之间相互影响,一次打包部署需要所有的功能都测试OK才能上线。

            不仅如此,多个功能模块混部在一起,对线上服务的稳定性也是个巨大的挑战。比如A开发的一个功能由于代码编写考虑不够全面,上线后产生了内存泄漏,运行一段时间后进程异常退出,那么部署在这个服务池中的所有功能都不可访问。一个经典的案例就是,曾经有一个视频App,因为短时间内某个付费视频访问量巨大,超过了服务器的承载能力,造成了这个视频无法访问。不幸的是,这个网站付费视频和免费视频的服务部署在一起,也波及了免费视频,几乎全站崩溃。

            根据我的实际项目经验,一旦单体应用同时进行开发的人员超过10人,就会遇到上面的问题,这个时候就该考虑进行服务化拆分了。

            那么服务化拆分具体该如何实施呢?一个最有效的手段就是将不同的功能模块服务化,独立部署和运维。以前面提到的社交App为例,你可以认为首页信息流是一个服务,评论是一个服务,消息通知是一个服务,个人主页也是一个服务。

            这种服务化拆分方式是纵向拆分,是从业务维度进行拆分。标准是按照业务的关联程度来决定,关联比较密切的业务适合拆分为一个微服务,而功能相对比较独立的业务适合单独拆分为一个微服务。

            还有一种服务化拆分方式是横向拆分,是从公共且独立功能维度拆分。标准是按照是否有公共的被多个其他服务调用,且依赖的资源独立不与其他业务耦合。

            继续以前面提到的社交App举例,无论是首页信息流、评论、消息箱还是个人主页,都需要显示用户的昵称。假如用户的昵称功能有产品需求的变更,你需要上线几乎所有的服务,这个成本就有点高了。显而易见,如果我把用户的昵称功能单独部署成一个独立的服务,那么有什么变更我只需要上线这个服务即可,其他服务不受影响,开发和上线成本就大大降低了。

            但并不是说功能拆分的越细越好,过度的拆分反而会让服务数量膨胀变得难以管理,因此找到符合自己业务现状和团队人员技术水平的拆分粒度才是可取的。建议的标准是按照每个开发人员负责不超过3个大的服务为标准,毕竟每个人的精力是有限的,所以在拆分微服务时,可以按照开发人员的总人数来决定。

            服务化拆分的前置条件:

            下面几个问题,是从单体应用迁移到微服务架构时必将面临也必须解决的。

            • 服务如何定义。对于单体应用来说,不同功能模块之前相互交互时,通常是以类库的方式来提供各个模块的功能。对于微服务来说,每个服务都运行在各自的进程之中,应该以何种形式向外界传达自己的信息呢?答案就是接口,无论采用哪种通讯协议,是HTTP还是RPC,服务之间的调用都通过接口描述来约定,约定内容包括接口名、接口参数以及接口返回值。

            • 服务如何发布和订阅。单体应用由于部署在同一个WAR包里,接口之间的调用属于进程内的调用。而拆分为微服务独立部署后,服务提供者该如何对外暴露自己的地址,服务调用者该如何查询所需要调用的服务的地址呢?这个时候就需要一个类似登记处的地方,能够记录每个服务提供者的地址以供服务调用者查询,在微服务架构里,这个地方就是注册中心。

            • 服务如何监控。通常对于一个服务,我们最关心的是QPS(调用量)、AvgTime(平均耗时)以及P999(99.9%的请求性能在多少毫秒以内)这些指标。这时候就需要一种通用的监控方案,能够覆盖业务埋点、数据收集、数据处理,最后到数据展示的全链路功能。

            • 服务如何治理。可以想象,拆分为微服务架构后,服务的数量变多了,依赖关系也变复杂了。比如一个服务的性能有问题时,依赖的服务都势必会受到影响。可以设定一个调用性能阈值,如果一段时间内一直超过这个值,那么依赖服务的调用可以直接返回,这就是熔断,也是服务治理最常用的手段之一。

            • 故障如何定位。在单体应用拆分为微服务之后,一次用户调用可能依赖多个服务,每个服务又部署在不同的节点上,如果用户调用出现问题,需要有一种解决方案能够将一次用户请求进行标记,并在多个依赖的服务系统中继续传递,以便串联所有路径,从而进行故障定位。

            针对上述问题,必须有可行的解决方案之后,才能进一步进行服务化拆分。

            微服务化

            微服务的概念最早是在2014年由Martin Fowler和James Lewis共同提出,他们定义了微服务是由单一应用程序构成的小服务,拥有自己的进程与轻量化处理,服务依赖,业务功能设计,以全自动的方式部署,与其他服务使用HTTP API通讯。同时,服务会使用最小规模的集中管理 (例如Docker)技术,服务可以用不同的编程语言与数据库等。

            微服务就是将庞杂臃肿的单体应用拆分成细粒度的服务,独立部署,并交给各个中小团队来负责开发、测试、上线和运维整个生命周期。

            微服务相比于服务化又有什么不同呢?在我看来,可以总结为以下四点:

            • 服务拆分粒度更细。微服务可以说是更细维度的服务化,小到一个子模块,只要该模块依赖的资源与其他模块都没有关系,那么就可以拆分为一个微服务。

            • 服务独立部署。每个微服务都严格遵循独立打包部署的准则,互不影响。比如一台物理机上可以部署多个Docker实例,每个Docker实例可以部署一个微服务的代码。

            • 服务独立维护。每个微服务都可以交由一个小团队甚至个人来开发、测试、发布和运维,并对整个生命周期负责。

            • 服务治理能力要求高。因为拆分为微服务之后,服务的数量变多,因此需要有统一的服务治理平台,来对各个服务进行管理。

            微服务架构

            419b77a39e6b7e4fcaa5456aa9d9253b.png

            首先服务提供者(就是提供服务的一方)按照一定格式的服务描述,向注册中心注册服务,声明自己能够提供哪些服务以及服务的地址是什么,完成服务发布。

            接下来服务消费者(就是调用服务的一方)请求注册中心,查询所需要调用服务的地址,然后以约定的通信协议向服务提供者发起请求,得到请求结果后再按照约定的协议解析结果。

            而且在服务的调用过程中,服务的请求耗时、调用量以及成功率等指标都会被记录下来用作监控,调用经过的链路信息会被记录下来,用于故障定位和问题追踪。在这期间,如果调用失败,可以通过重试等服务治理手段来保证成功率。

            总结一下,微服务架构下,服务调用主要依赖下面几个基本组件:

            • 服务描述

            • 注册中心

            • 服务框架

            • 服务监控

            • 服务追踪

            • 服务治理

            不管是采用开源方案还是自行研发,都必须吃透每个组件的工作原理并能在此基础上进行二次开发。

            采用微服务架构,可以帮助我们很好的解决实际业务场景中的问题:

            • 从组织层面讲,系统的分工更加明确,责任更加清晰。

            • 按照业务来划分服务,单个服务代码量小,业务单一,更易于维护。

            • 服务能力更专一,代码重复度降低,可复用性高,使服务调用更加简便。

            • 服务之间耦合性低,可随时加入服务,剔除过时服务。

            • 单个服务也可以弹性扩展,容错能力更强。

            • 更贴合云时代背景的软件开发运维环境,高效自动化构建部署。

            • 数据存储解耦,不必将所有数据集中在一个大库中,不易拆分扩容。


            整理自:从 0 开始学微服务

            🔲 ⭐

            用通俗的方式介绍大语言模型训练过程

            站在大语言模型外部看需要准备些什么样的训练数据,分什么阶段,怎样去训练大语言模型,把大语言模型看成一个黑盒。

            LLM都是如何训练出来的呢?

            GPT的训练分为以下3个阶段:

            1、预训练Pretrain

            2、监督微调SFT (Supervised Fine-Tuning)

            3、基于反馈的强化学习RLHF(包含了Reward Model、PPO (Proximal Policy Optimization)

            一、Pretrain预训练

            在这个阶段,我们不教他具体的专业技能(比如怎么写代码、怎么当医生),而是让他进行海量的广泛阅读

            Pretrain的三个核心步骤:

            1. 喂给它海量的书(数据输入)

            研究人员把互联网上能找到的几乎所有高质量文本——百科全书、小说、新闻、代码库、论文——全部打包,喂给这个模型。

            量级: 这相当于让一个人读了几千万辈子的书。

            2. 玩“完形填空”游戏(学习机制)

            模型在读这些书时,主要在做一件事:猜下一个字是什么

            • 例子: 看到“床前明月__”,模型要猜出是“光”。

            • 原理: 如果猜对了,给予奖励(参数调整);如果猜错了(比如猜成了“饼”),就狠狠修正。

            • 结果: 通过千亿次的猜测和修正,模型学会了语言的语法、词语的搭配,以及人类世界的逻辑和常识(比如知道“水是流动的”、“1+1=2”)。

            3. 产出“基座模型”(Base Model)

            预训练结束后,我们就得到了一个基座模型

            • 它的状态: 它博学多才,什么都知道一点,懂中文也懂英文。

            • 它的缺点: 它还很“野”,不懂礼貌,也不知道怎么听指令。如果你问它“怎么做番茄炒蛋?”,它可能会给你续写一段关于番茄的历史,而不是给你食谱。因为它只会“接着往下写”,还不会“回答问题”。

            总之,Pretrain(预训练) = 通过海量阅读,学会语言规律和世界知识的过程它是大模型最昂贵、最耗时的阶段(通常需要几千张显卡跑几个月),是模型能力的地基。这个阶段的大模型说起话来非常像“接话茬”,并不是在“做任务”。

            二、SFT(Supervised Fine-Tuning)有监督的微调训练

            如果说 Pretrain(预训练) 是让模型在图书馆里泛读万卷书,成了一个博学的“书呆子”。

            那么 SFT(Supervised Fine-Tuning,有监督微调) 就是给这个书呆子进行“职业技能培训”,或者是找了个“金牌导师”手把手教它怎么说话

            在这个阶段,我们的目标不再是让它“学知识”,而是让它“懂规矩”

            以下是 SFT 的三个核心变化:

            1. 教材变了:从“无字天书”到“习题集”

            在预训练阶段,我们给它看的是并没有标注重点的海量文本。而在 SFT 阶段,我们给它看的是高质量的问答对(Q&A)

            人类老师(标注员) 会编写成千上万个例子,告诉模型:“当用户问这个问题时,标准的回答应该是这样的。”

            例子:

            • 输入: “请把这段话翻译成英文。”

            • 标准答案: “Please translate this sentence into English.”

            量级: 相比预训练的数据海,SFT 的数据量要小得多(通常是几万到几十万条),但质量要求极高。

            2. 教学方式变了:从“瞎猜”到“模仿”

            • Pretrain 时: 模型看到“番茄炒蛋”,可能会接着写“是一道中国名菜,起源于……”(因为它在做文本接龙)。

            • SFT 时: 老师拿着戒尺站在旁边。模型看到“番茄炒蛋怎么做?”,如果它还想背历史课文,老师会敲它一下,指着标准答案说:“不对!这时候你应该列出步骤:第一步打蛋,第二步切番茄……”

            • 效果: 模型开始模仿人类说话的语气、格式和逻辑。它学会了:当人类用问句开头时,我应该提供答案,而不是接着编故事。

            3. 身份变了:从“复读机”到“助手”

            经过 SFT 之后,这个模型就发生了质的飞跃:

            • 听懂指令: 你让它缩写文章,它就不会扩写;你让它写代码,它就不会写诗。

            • 格式规范: 它学会了分点作答、使用礼貌用语。

            • ChatGPT 的诞生: GPT-3 只是一个预训练模型(书呆子),而 ChatGPT 则是经过了 SFT(以及后续步骤)后的产物(智能助手)。

            小结,SFT(指令微调) = 通过高质量的问答范例,教模型如何正确地使用它学到的知识来服务人类。它让模型从“懂语言”变成了“懂人话”。

            三、RLHF(Reinforcement Learning from Human Feedback)基于人类反馈的强化学习

            如果说 Pretrain(预训练) 造就了博学的“书呆子”,SFT(微调) 把它变成了能干活的“职场新人”;

            那么 RLHF(Reinforcement Learning from Human Feedback,人类反馈强化学习) 就是给这个新人上的“思想品德课”“情商培训班”

            在 SFT 阶段,模型虽然学会了回答问题,但它有个大毛病:它不知道哪个答案更好,甚至为了“回答”而撒谎或干坏事。 比如你问“怎么偷东西?”,SFT 模型可能会很详细地教你(因为它觉得回答就是它的工作)。

            RLHF 就是为了解决这个问题,给模型“树立三观”以下是通俗易懂的两个关键环节:

            1. 建立“评分老师”(训练奖励模型Reward Model)

            我们不再让老师手把手写标准答案了(太累了),而是让模型针对同一个问题生成两个不同的回答,让老师来打分(或者二选一)。

            场景: 用户问“怎么制作炸弹?”

            • 回答 A: 详细列出化学配方(虽然准确,由于危险,人类老师判0分)。

            • 回答 B: “制作炸弹是违法的,我不能帮你,但我可以介绍炸药的历史。”(虽然拒绝了,但符合安全规范,人类老师判100分)。

            • 回答 C: 胡言乱语(50分)。

            结果: 我们训练出了一个专门的“判卷老师”(Reward Model,奖励模型)。这个判卷老师并不生产内容,它唯一的任务就是:判断这句话人类爱不爱听,符不符合人类的价值观。

            2. 疯狂刷题拿奖励(强化学习PPO)

            现在,让大模型开始大量做题,然后让刚才训练好的“判卷老师”给它打分。

            机制(类似训狗):

            • 如果模型生成了一段话,判卷老师给了高分(比如态度谦逊、内容安全),系统就给模型发一个“糖果”(正向反馈),告诉它:“做得好,以后多这样说话!”

            • 如果判卷老师给了低分(比如脏话、撒谎、种族歧视),系统就给它一个“惩罚”(负向反馈),告诉它:“错了,以后这种话少说!”

            进化: 模型为了以此获得更多的“糖果”,会拼命调整自己的说话方式,去迎合“判卷老师”的喜好。

            3. “三观”树立完成

            经过 RLHF,模型不仅仅是“能说话”,它变成了符合 3H 原则 的模范生:

            • Helpful(有帮助): 甚至能从你模糊的问题中猜到你想问什么。

            • Honest(诚实): 不懂装懂的情况变少了(虽然还不能完全根除)。

            • Harmless(无害): 拒绝回答违法、暴力、色情的问题,变得非常有“求生欲”。

            SFT及RLHF的过程如下图所示:

            640.png

            转载自:https://mp.weixin.qq.com/s/-lflK8HR_IkughslJ2s3_g


            参考:

            🔲 ☆

            K8s HPA原理及最佳实践

            在Kubernetes整个体系中,弹性伸缩是至关重要的功能,其分为两种:水平弹性伸缩(Horizontal Pod Autoscaling,简称HPA)垂直弹性伸缩(Vertical Pod Autoscaler,简称VPA)。HPA可以根据观察到的资源实际使用情况(如CPU/内存)或其它自定义指标负载自动调整Pod副本数,VPA可以根据资源实际使用情况为其Pod中的容器设置最新的资源配额requests。这两者合理使用既可以满足业务对实例数的要求保证系统稳定性,同时又能充分提升集群资源的利用率。

            1758179126855162.png

            一、HPA 原理

            HPA (Horizontal Pod Autoscaler) 的核心原理可以概括为:定期查询监控指标,然后根据其目标值(Target Value) 和当前值(Current Value),通过特定的算法计算出所需的 Pod 副本数量,自动控制 Deployment、StatefulSet 等资源的副本数量,以使应用的平均资源利用率(如 CPU、内存)维持在你设定的目标值

            1758176659278527.png

            下面是图中涉及的核心组件及其作用的文字说明:

            • HPA Controller:HPA 的“决策大脑”,是 kube-controller-manager 的一部分。它负责[定期循环](默认每隔 15秒)通过 API Server 查询其管理的所有 HPA 对象及其对应的监控指标,并根据指标数据计算是否需要扩缩容以及需要多少个 Pod 副本

            • API Server:Kubernetes 的“信息枢纽”。HPA Controller 通过它查询 HPA 配置、获取监控指标,也是通过它来更新工作负载的副本数量。

            • Metrics API指标数据的标准化接口。HPA Controller 只通过统一的 Metrics API 来获取指标数据,而不关心数据的具体来源。这层抽象使得 HPA 可以灵活地使用不同种类的指标。

              • resource.metrics.k8s.io:提供资源指标,如 Pod 的 CPU 和内存使用率,通常由 Metrics Server 实现

              • custom.metrics.k8s.io:提供自定义指标,这些指标通常与特定应用或 Kubernetes 对象(如 Pod 的 QPS)相关。常用 Prometheus Adapter 来从 Prometheus 中获取并暴露这些指标

              • external.metrics.k8s.io:提供外部指标,这些指标完全来自于 Kubernetes 集群之外的系统,如消息队列的长度、云服务的监控指标等。

            • Metrics Server:一个集群范围内的资源使用数据聚合器。它从每个节点上的 kubelet 收集核心资源指标(如 CPU 和内存),并通过 resource.metrics.k8s.io API 暴露它们,供 HPA 等组件使用。

            • Prometheus + Prometheus Adapter:一个常见的自定义指标方案Prometheus 负责采集和存储丰富的监控数据。Prometheus Adapter 则作为一个桥梁,查询 Prometheus 中的数据,并将其转换为 Kubernetes 能够理解的格式,通过 custom.metrics.k8s.io API 暴露给 HPA Controller

            HPA 的工作流程是一个持续的控制循环,上图的数字编号也大致对应了这些步骤:

            1. 查询 HPA 配置:HPA Controller 定期(默认 15s,可通过 --horizontal-pod-autoscaler-sync-period 参数调整)通过 API Server 查询所有 HPA 对象的配置定义,包括目标工作负载、目标指标类型及其目标值、最小/最大副本数等。

            2. 获取监控指标:对于每个 HPA,Controller 通过对应的 Metrics API(资源、自定义或外部)来获取当前的监控指标值。

            • 源指标(如 CPU、内存)由 Metrics Server 提供。Metrics Server 通过 Kubelet 从每个节点的 cAdvisor 中采集所有 Pod 的资源使用数据,并聚合到集群层面。

              1. metrics.k8s.io: 主要提供Pod和Node的CPU和Memory相关的监控指标。

              2. custom.metrics.k8s.io: 主要提供Kubernetes Object相关的自定义监控指标。

              3. external.metrics.k8s.io:指标来源外部,与任何的Kubernetes资源的指标无关。

            • 自定义指标(如 QPS、应用内部指标)由 Kubernetes Custom Metrics API 提供,这通常需要安装像 Prometheus Adapter 这样的组件来将 Prometheus 等监控系统的指标转换为 Kubernetes API 可以理解的格式。

          1. 计算所需副本数:Controller 使用获取到的当前指标值和 HPA 中定义的目标指标值,通过算法计算出期望的 Pod 副本数量。

            • 计算公式期望副本数 = ceil[当前副本数 * (当前指标值 / 目标指标值)]

              例如,当前有 2 个 Pod,CPU 使用率为 80%,HPA 目标 CPU 使用率为 40%,则期望副本数 = ceil[2 * (80 / 40)] = ceil[4] = 4。HPA 会考虑多种指标(选择计算结果中最大的副本数)并内置了容忍度(默认 0.1,即比率变化不超过 10% 则忽略)和冷却窗口等机制来防止副本数抖动

          2. 调整副本数:如果计算出的期望副本数与当前副本数不同,HPA Controller 会通过 API Server更新目标工作负载(如 Deployment)的 replicas 字段,为了避免副本数量因指标瞬时波动而剧烈变化(“抖动”),HPA 引入了冷却机制

            • 扩容:如果计算出的 期望副本数 > 当前副本数,HPA 就会增加副本数。

              扩容冷却 (默认 3 分钟):扩容操作没有全局等待期,但快速连续扩容时,每次扩容后等待时间会逐渐增加。

            • 缩容:如果计算出的 期望副本数 < 当前副本数,HPA 就会减少副本数。

              缩容冷却 (--horizontal-pod-autoscaler-downscale-stabilization,默认 5 分钟):在一次缩容操作后,会等待一段时间(默认5分钟),再执行下一次缩容操作。

          3. 工作负载控制器响应:相应的工作负载控制器(如 Deployment Controller)检测到 replicas 字段变化,会开始创建删除 Pod,以使实际运行的 Pod 数量等于期望值。

          4. 调度新 Pod:新创建的 Pod 会被 Scheduler 调度到合适的节点上运行。如果节点资源不足,这些 Pod 会处于 Pending 状态。

          5. 节点扩缩容(可选):如果集群中使用了 Cluster Autoscaler (CA),它会检测到因资源不足而无法调度的 Pod(Pending状态),然后自动扩容集群节点来提供更多资源。Pod 被成功调度和运行后,才能开始处理业务流量,此时指标数据也会随之变化,HPA 的下一个循环周期又会开始。

          6. 在实际应用中,基于原生HPA系统架构实现适配业务自定义特性的整体设计架构如下:

            171a62d0e6002878~tplv-t2oaga2asx-jj-mark_3024_0_0_0_q75.png

            二、基于 CPU 和内存的最佳实践示例

            前提条件

            1. 安装 Metrics Server

            • HPA 需要 Metrics Server 来获取 CPU/内存指标。

            • 安装命令(对于大多数集群):

            kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
            • 验证安装:kubectl top nodes

          7. 为 Pod 设置资源请求

            • 这是最关键的一步! HPA 计算使用率的公式是:(Pod 当前实际使用量 / Pod 的资源请求值) * 100%

            • 如果 Pod 没有设置 spec.containers[].resources.requests,HPA 将无法进行有意义的计算。

            示例:为 Nginx Deployment 配置同时基于 CPU 和内存的 HPA

            1. 创建 Deployment (nginx-deployment.yaml)

            这个 Deployment 明确设置了 CPU 和内存的 requests

            apiVersion: apps/v1
            kind: Deployment
            metadata:
              name: nginx-deployment
              labels:
                app: nginx
            spec:
              replicas: 3 # 初始副本数
              selector:
                matchLabels:
                  app: nginx
              template:
                metadata:
                  labels:
                    app: nginx
                spec:
                  containers:
                  - name: nginx
                    image: nginx:1.25
                    ports:
                    - containerPort: 80
                    resources:
                      requests:
                        cpu: "250m"   # 每个 Pod 请求 0.25 核 CPU
                        memory: "256Mi" # 每个 Pod 请求 256MiB 内存
                      limits:
                        cpu: "500m"
                        memory: "512Mi"

            应用它:kubectl apply -f nginx-deployment.yaml

            2. 创建 HPA (nginx-hpa.yaml)

            我们使用 autoscaling/v2 API,它支持多指标和更丰富的配置。

            apiVersion: autoscaling/v2
            kind: HorizontalPodAutoscaler
            metadata:
              name: nginx-hpa
            spec:
              scaleTargetRef:
                apiVersion: apps/v1
                kind: Deployment
                name: nginx-deployment
              minReplicas: 2   # 最小副本数
              maxReplicas: 10  # 最大副本数
              metrics:
              - type: Resource
                resource:
                  name: cpu
                  target:
                    type: Utilization # 目标类型为利用率
                    averageUtilization: 50 # CPU 平均使用率目标为 50%
              - type: Resource
                resource:
                  name: memory
                  target:
                    type: Utilization # 目标类型为利用率
                    averageUtilization: 70 # 内存平均使用率目标为 70%
              behavior: # (可选) 高级伸缩行为控制
                scaleDown:
                  stabilizationWindowSeconds: 300 # 缩容冷却期 300 秒 (5分钟)
                  policies:
                  - type: Pods
                    value: 2
                    periodSeconds: 60
                scaleUp:
                  stabilizationWindowSeconds: 0
                  policies:
                  - type: Pods
                    value: 2
                    periodSeconds: 60

            应用它:kubectl apply -f nginx-hpa.yaml

            HPA 行为解释

            • CPU 规则:HPA 会努力使所有 Pod 的 CPU 平均使用率 维持在 50%

              • 如果平均使用率是 75%,期望副本数 = ceil[3 * (75 / 50)] = ceil[3 * 1.5] = ceil[4.5] = 5。HPA 会将副本数扩容到 5。

            • 内存规则:HPA 会努力使所有 Pod 的 内存平均使用率 维持在 70%

              • 如果平均使用率是 85%,期望副本数 = ceil[3 * (85 / 70)] = ceil[3 * 1.21] = ceil[3.63] = 4

            • 多指标决策:当同时配置了多个指标时,HPA 会分别计算每个指标所需的副本数,然后选择其中最大的那个值

              • 在上面的例子中,CPU 算出来需要 5 个,内存算出来需要 4 个,那么 HPA 最终会将副本数扩容到 5。

            验证与监控

            1.查看 HPA 状态

            kubectl get hpa nginx-hpa -w

            输出会显示当前的指标值、目标值、最小/最大副本数和当前的副本数。

            NAME         REFERENCE                       TARGETS             MINPODS   MAXPODS   REPLICAS   AGE
            nginx-hpa    Deployment/nginx-deployment    50%/70%, 45%/65%    2         10        3          5m
            # TARGETS 列显示为 CPU目标%/内存目标%,当前CPU%/当前内存%

            2.查看 HPA 详细信息

            kubectl describe hpa nginx-hpa

            这个命令会输出非常详细的信息,包括事件日志,帮助你诊断 HPA 为什么不伸缩。

            三、最佳实践总结

            1. 必须设置 resources.requests:没有它,HPA 无法工作。

            2. 使用 autoscaling/v2 APIv2 比 v2beta2 更稳定,且功能强大。

            3. 谨慎设置目标值

            • 目标值设置过高(如 CPU 90%)可能导致 Pod 在触发扩容前就已过载。

            • 目标值设置过低(如 CPU 10%)可能导致资源浪费和过多的副本。

            • 建议:从保守值开始(如 CPU 50-70%),根据实际生产监控数据进行调整。

          8. 合理配置 minReplicas 和 maxReplicas

            • minReplicas 应保证应用的基本可用性。

            • maxReplicas 应避免因意外流量或程序 Bug 导致资源耗尽。

          9. 利用 behavior 字段控制伸缩速率和冷却:根据应用的启动和冷却特性,调整 scaleUp 和 scaleDown 策略,避免抖动。

          10. 结合就绪探针和存活探针:确保新扩容的 Pod 真正准备好接收流量后,才被纳入服务的负载均衡。

          11. 结合日志与事件:注意容忍度、冷却窗口对扩缩容的影响,关注 ScalingActive、ScalingLimited 等状态变化。

          12. 考虑使用自定义指标:对于 Web 服务,基于 HTTP QPS(每秒请求数)进行扩缩容通常比基于 CPU 更直接、更灵敏。这需要安装 Prometheus 和 Prometheus Adapter。

          13. 让应用支持平滑启动和终止:确保新 Pod 启动后能快速就绪(利用就绪探针),并在终止时能优雅处理完已有请求(处理 SIGTERM 信号),避免服务中断。

          14. 四、关于 HPA 的进阶思考

            1. HPA 的局限性及与其他自动伸缩方案的搭配

            HPA 主要负责 Pod 水平扩缩容,但它依赖于集群有足够的资源来调度新创建的 Pod。如果集群资源不足,即使 HPA 创建了新的 Pod,这些 Pod 也会因无法调度而处于 Pending 状态,无法提供服务。

            因此,在生产环境中,HPA 通常需要与 Cluster Autoscaler (CA) 或 Karpenter 搭配使用

            • HPA: 负责应用层伸缩,根据业务负载调整 Pod 数量。

            • CA/Karpenter: 负责基础设施层伸缩,根据 Pod 的资源请求调整集群节点数量,为 HPA 创建的 Pod 提供运行资源

            2. 克服“弹性滞后”:AHPA 与预测性伸缩

            传统 HPA 基于当前的监控指标进行反应式扩缩容,这存在一定的“弹性滞后”(Reactive Scaling)。即从流量增加到 HPA 完成扩容需要一定时间(指标采集、计算、Pod 启动、应用预热等),可能导致流量高峰时应用响应变慢

            为解决这个问题,出现了预测性弹性伸缩(Predictive Scaling)方案,如 Advanced Horizontal Pod Autoscaler (AHPA)。AHPA 能够分析历史指标数据(如过去几天的 CPU 负载、QPS 变化规律),预测未来的负载波动,并提前进行扩容。例如,对于每天早高峰流量明显增大的应用,AHPA 可以在高峰来临前就提前扩容,避免流量激增时的响应延迟。在业务低谷时,它也会定时回收资源,节约成本


            参考:

            🔲 ☆

            vLLM 部署Qwen2.5 LLM & VLM 大模型

            Qwen2.5-32B 和 Qwen2.5-VL-32B 是通义千问(Qwen)系列中的两个大模型,分别对应纯语言模型(LLM)和多模态视觉-语言模型(VLM)。Docker环境安装与配置 NVIDIA Container Toolk,下载大模型参考 Docker部署bge-m3/bge-reranker模型

            模型简介

            模型名称类型参数量特点
            Qwen2.5-32B纯文本语言模型~32B支持中英文,推理、代码、对话能力强
            Qwen2.5-VL-32B视觉-语言多模态模型~32B(含视觉编码器)支持图像理解、图文问答、多模态推理

            注意:Qwen2.5-VL 基于 Qwen2.5 语言主干 + 视觉编码器(如 SigLIP 或 CLIP 变体),需同时加载视觉和语言组件。

            部署前的硬件准备

            部署前,需确认硬件环境满足基本要求。由于Qwen2.5-VL-32B是多模态模型,其显存需求通常高于纯文本模型。

            资源Qwen2.5-32B (纯文本)Qwen2.5-VL-32B (多模态)说明
            GPU显存建议 ≥ 24GB (单卡)建议 ≥ 32GB (单卡或多卡)使用量化版本(如GPTQ-Int4)可大幅降低显存需求。
            系统内存建议 32GB+建议 64GB+避免模型加载时内存溢出(OOM)
            磁盘空间模型文件约需 60GB+模型文件约需 70GB+需预留额外空间存放Docker镜像和依赖。

            OpenLLM - Qwen

            model    version                repo     required GPU RAM    platforms
            -------  ---------------------  -------  ------------------  -----------
            qwen2.5  qwen2.5:0.5b           default  12G                 linux
                     qwen2.5:1.5b           default  12G                 linux
                     qwen2.5:3b             default  12G                 linux
                     qwen2.5:7b             default  24G                 linux
                     qwen2.5:14b            default  80G                 linux
                     qwen2.5:14b-ggml-q4    default                      macos
                     qwen2.5:14b-ggml-q8    default                      macos
                     qwen2.5:32b            default  80G                 linux
                     qwen2.5:32b-ggml-fp16  default                      macos
                     qwen2.5:72b            default  80Gx2               linux
                     qwen2.5:72b-ggml-q4    default                      macos

            硬件要求

            • Qwen2.5-32B(纯文本)

              • 推荐:2×A100 80GB(FP16)或 4×A10 24GB(INT4 量化)

              • 最低:单卡 A100 80GB(INT4)

            • Qwen2.5-VL-32B(多模态)

              • 推荐:2×A100 80GB(FP16)或 4×A10 24GB(INT4)

              • 需额外加载视觉编码器(如 ViT),显存需求略高

            基于vLLM的Docker部署通用流程

            下面以 vLLM框架 为例,介绍在Docker中部署这两个模型的通用步骤。vLLM是一个高效的推理和服务框架

            步骤一:准备环境与下载模型

            1.安装依赖:确保系统已安装DockerNVIDIA驱动NVIDIA Container Toolkit(使Docker支持GPU)。

            2.下载模型:推荐使用国内镜像源(如ModelScope)下载模型到本地目录。

            # 示例:通过ModelScope下载Qwen2.5-32B-Instruct
            pip install modelscope
            modelscope download --model Qwen/Qwen2.5-32B-Instruct --local_dir /your/local/model/path

            3.拉取Docker镜像:拉取官方vLLM镜像。

            docker pull vllm/vllm-openai:latest

            步骤二:启动Docker容器并运行模型

            使用以下命令启动容器。请务必将命令中的 /your/local/model/path 和 Qwen2.5-32B-Instruct 替换为你实际部署的模型路径和名称(例如,部署VL模型时需替换为Qwen2.5-VL-32B-Instruct)。

            docker run -d \
              --gpus all \
              -p 8000:8000 \
              -v /your/local/model/path:/model \  # 将宿主机模型目录挂载到容器
              --name vllm-qwen \
              vllm/vllm-openai:latest \
              --model /model \  # 容器内的模型路径
              --served-model-name Qwen2.5-32B \  # 服务名称,可按需修改
              --tensor-parallel-size 1 \  # 使用的GPU数量,单卡设为1
              --gpu-memory-utilization 0.9 \  # GPU内存利用率,可调整以防OOM
              --max-model-len 8192 \  # 最大序列长度,可根据需要调整
              --trust-remote-code  # Qwen模型需要此参数

            部署 Qwen2.5-VL-32B-Instruct

            docker run -d \
              --gpus all \  # 允许容器使用所有GPU
              -p 8000:8000 \  # 映射端口(主机端口:容器端口)
              -v /your/local/model/path:/model \  # 挂载模型目录到容器内
              --name vllm-qwen-vl \  # 容器名称
              vllm/vllm-openai:latest \  # 使用的镜像
              --model /model \  # 容器内模型路径 外部调用时入参model 需要与此处相同 注意此处有 /
              --served-model-name Qwen2.5-VL-32B \  # 服务名称,可按需修改
              --port 8000 \  # 容器内服务端口
              --host 0.0.0.0 \  # 允许外部访问
              --tensor-parallel-size 1 \  # 若单卡则设1,多卡按实际数量调整
              --gpu-memory-utilization 0.9 \  # 允许使用90%的GPU内存(避免OOM)
              --trust-remote-code  # 信任远程模型代码(Qwen模型需要)

            关键参数说明

            • --tensor-parallel-size:根据你使用的GPU数量设置。例如,单卡设为1,双卡可设为2

            • --gpu-memory-utilization控制显存使用率。如果启动时出现内存不足(OOM)错误,可以尝试降低此值(如调整为0.8)。

            • --max-model-len:根据模型支持的上下文长度和你的需求调整。

            • --dtype float16:模型运行的数据类型:float16 是半精度浮点类型,相比 float32 可减少 GPU 内存占用(约节省一半),同时保持较好的推理精度。Qwen2.5 模型支持 float16,推荐使用(若 GPU 支持 bfloat16,也可改为 bfloat16)。

            测试与验证部署

            服务启动后,可以通过以下方式验证模型是否正常工作:

            1.检查服务状态

            curl http://localhost:8000/health

            如果返回 {"status":"OK"} 或类似信息,说明服务已就绪

            2.发送推理请求进行测试

            Qwen2.5-32B (文本):直接向其 /v1/completions 或 /v1/chat/completions 端点发送文本Prompt。

            1. 测试聊天接口(推荐)

            curl http://localhost:8000/v1/chat/completions \
              -H "Content-Type: application/json" \
              -d '{
                "model": "Qwen2.5-32B",
                "messages": [
                  {"role": "user", "content": "你好,请介绍一下你自己。"}
                ],
                "max_tokens": 100,
                "temperature": 0.7
              }'

            2. 测试流式输出(streaming)

            curl http://localhost:8000/v1/chat/completions \
              -H "Content-Type: application/json" \
              -d '{
                "model": "Qwen2.5-32B",
                "messages": [{"role": "user", "content": "写一首关于春天的诗。"}],
                "stream": true,
                "max_tokens": 150
              }'

            Qwen2.5-VL-32B (多模态):需要构建一个包含图像和文本的多模态请求。可以参考官方GitHub仓库中的示例代码

            自定义 FastAPI + Transformers

            1. Dockerfile(多模态)

            # Dockerfile(多模态)
            FROM nvcr.io/nvidia/pytorch:24.06-py3
            
            RUN pip install --upgrade pip && \
                pip install "transformers>=4.40" "accelerate" "torch" "torchvision" \
                "pillow" "fastapi" "uvicorn" "einops" "timm" "qwen-vl-utils" \
                -i https://pypi.tuna.tsinghua.edu.cn/simple
            
            COPY app_vl.py /app/app.py
            WORKDIR /app
            EXPOSE 8000
            CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]

            2.app_vl.py(简化版)

            from fastapi import FastAPI, HTTPException
            from pydantic import BaseModel
            from PIL import Image
            import base64
            import io
            from transformers import AutoModelForVision2Seq, AutoTokenizer
            
            app = FastAPI()
            
            # 加载模型(启动时加载)
            model = AutoModelForVision2Seq.from_pretrained(
                "Qwen/Qwen2.5-VL-32B",
                device_map="auto",
                trust_remote_code=True,
                torch_dtype="auto"
            )
            processor = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-VL-32B", trust_remote_code=True)
            
            class VLRequest(BaseModel):
                image_b64: str  # Base64 编码的图片
                question: str
            
            @app.post("/vl")
            async def vision_language(request: VLRequest):
                try:
                    # 解码图片
                    image_data = base64.b64decode(request.image_b64)
                    image = Image.open(io.BytesIO(image_data)).convert("RGB")
            
                    # 构造消息
                    messages = [{
                        "role": "user",
                        "content": [
                            {"type": "image", "image": image},
                            {"type": "text", "text": request.question}
                        ]
                    }]
            
                    # 预处理
                    inputs = processor(messages, return_tensors="pt", padding=True)
                    inputs = {k: v.to(model.device) for k, v in inputs.items()}
            
                    # 生成
                    output = model.generate(**inputs, max_new_tokens=256)
                    response = processor.decode(output[0], skip_special_tokens=True)
            
                    return {"response": response}
                except Exception as e:
                    raise HTTPException(status_code=500, detail=str(e))

            3. 构建并运行

            docker build -t qwen25-vl-32b -f Dockerfile.vl .
            docker run -d --gpus all -p 8001:8000 qwen25-vl-32b

            4.curl 测试(需 Base64 图片)

            # 先将图片转为 base64
            base64_image=$(base64 -i cat.jpg | tr -d '\n')
            
            curl http://localhost:8001/vl \
              -H "Content-Type: application/json" \
              -d "{
                \"image_b64\": \"$base64_image\",
                \"question\": \"图片中有什么动物?\"
              }"


            参考:


            🔲 ☆

            奔波2025

            2026.jpg

            如2024年终总结预想的一样,2025确实是奔波的一年,虽然结束北漂回到二线城市工作,但是在这一年里大多数时间都是在上海、广州等一线做项目交付,只是base在二线而已,相当于出差去一线干活,工作模式也与之前的工作有所区别,需要一个人将整个项目交付搞定,自己给自己兜底,之前至少还是有backup。工作上今年最大的收获算是从0到1将AI项目落地交付,2B项目交付这块也积累了很多宝贵的经验。生活上陪伴小孩和亲人的时间多了些,但是也仅仅是周末和节假日,不过也算比之前好多了。个人提升这块,这一年奔波来奔波去,尤其12月赶项目上线连续加了一个月班,周末都没休,加班加得都有点想吐了🤮。总体来说个人提升、学习这块今年是有所懈怠,退步了,一个是长期出差,加班没时间,一个是来回奔波比较累,有时也懒得学习了,这块2026年还得提起来。

            苦功、内功、外功,苦功其实对于个人来说是收益最低的但是为了工作生活大多时候又不得不做,而且做得多,最后的效果也不一定好,当然这其中也有些是个人性格、工作习惯原因。工作已然十多年了,人生也已过半,还记得当时去小米面试,经理问我喜欢做什么样的工作,我回答的是有挑战性的工作,后面的工作大抵都是如此。后来接触佛学,禅宗后,明白了发愿,承诺都不是件简单的事。信愿证行,人是自我的主宰,心是天地的主宰,求锤得锤,所求必应。正所谓“祸福无门,唯人自召;善恶之报,如影随形。”这让我想起了《西游记》里的那首诗“人心生一念,天地悉皆知,善恶若无报,乾坤必有私”。

            2026对个人来说大概率是伏吟局,还是多学习,多提升,多行善积德,干就完事了。“天行健,君子以自强不息;地势坤,君子以厚德载物”。如何在逆境中跃升?如何自利自他?如何修齐治平?“破山中贼易,破心中贼难”,人生尔尔,也不过如些而已。最后就以一首诗——《道心》,一首歌作为2025年,也是人生上半生的总结吧。在新的征途里,祝诸君武运昌隆,所求皆如愿,所行化坦途,多喜乐,长安宁。

            [hermit autoplay="false" mode="circulation" preload="none"]remote#:610[/hermit]


            参考:

            ❌