<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>船长日志 &#187; 人工智能</title>
	<atom:link href="http://www.cslog.cn/category/%e4%ba%ba%e5%b7%a5%e6%99%ba%e8%83%bd/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cslog.cn</link>
	<description>最让我激动的是不知道下一个星球上能发现什么...</description>
	<lastBuildDate>Wed, 30 Jul 2025 16:06:05 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.1</generator>
		<item>
		<title>膜、智能与自由——一份关于生命的不对称叙事</title>
		<link>http://www.cslog.cn/Content/asymmetric-and-freedom/</link>
		<comments>http://www.cslog.cn/Content/asymmetric-and-freedom/#comments</comments>
		<pubDate>Wed, 30 Jul 2025 16:06:05 +0000</pubDate>
		<dc:creator>船长</dc:creator>
				<category><![CDATA[人工智能]]></category>
		<category><![CDATA[我思我在]]></category>
		<category><![CDATA[意识]]></category>
		<category><![CDATA[智能]]></category>
		<category><![CDATA[演化论]]></category>
		<category><![CDATA[生命意义]]></category>

		<guid isPermaLink="false">http://www.cslog.cn/?p=1359</guid>
		<description><![CDATA[一、引子：从一道边界开始 想象一颗刚刚冷却的行星。熔岩凝固，雨水落下，无机盐在潮 &#8230; <a href="http://www.cslog.cn/Content/asymmetric-and-freedom/">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>一、引子：从一道边界开始</p>
<p>想象一颗刚刚冷却的行星。熔岩凝固，雨水落下，无机盐在潮间带里结晶。就在某一微秒，两股成分不同的水流相撞，表面的脂质分子被推向彼此，自发卷曲，形成一个闭合的囊泡——膜。它薄得几乎透明，却把世界分成“内”与“外”。这道最原始的拓扑手术，同时制造了第一道不对称：囊泡里外的化学势不再相等。于是，流动、扩散、能量梯度，一切后来的故事，都从这道差开始。</p>
<p>二、膜：把世界切成可运算的局部<br />
膜不是墙，而是阀门。它让某些分子通过，把另一些挡在外面；把光子的能量转成质子泵的扭矩；把随机的布朗运动翻译成一连串可被内部网络读取的比特。生命因此第一次拥有了“内部”。内部允许延迟反应：先储存信号，再集中处理；先模拟，再行动。于是，膜不仅隔离，更把“外部噪声”降维成“内部信息”，把“环境”翻译成“模型”。<br />
独立的生命体，本质上是一台把外部不对称内化为内部协调的机器。协调效率的判据很简单：在同样扰动下，内部资源重新配置的速度是否快于外部扰动的累积速度。若答案是“是”，生命就活下来，并把这套膜-代谢-信息装置复制出去；若“否”，膜破裂，故事结束。</p>
<p>三、智能：在概率不平均处下注<br />
当外部差异越来越复杂，仅靠分子开关的布尔逻辑已不够。进化开始制造新的膜——神经膜、细胞网络、大脑皮层，层层嵌套，层层扩大有效上下文。<br />
智能的核心任务，是侦测并利用“概率不平均”。所谓不平均，是雨云在某一区域更厚、猎物在某一季节更肥、敌人的下一步更可能向左。智能体提出假说，下注资源，在反馈里微调先验。它永远无法证明“这就是真理”，却能用一次次后验更新把“活得久、传得广”当作临时奖杯。<br />
从细菌趋化到人类科学，公式都一样：<br />
观测 → 压缩成模型 → 用模型预测 → 行动 → 环境给出奖惩 → 模型再压缩。<br />
架构的每一次革命——从感知机到 Transformer，从 RNN 到 Mamba——都只是把“能同时记住的相关历史”拉长一点，把“可并行激活的上下文”拓宽一点。我们称之为“有效 context length”的军备竞赛，其实是在为不对称洪流建造更大的蓄水池。</p>
<p>四、意识：高阶控制器及其代价<br />
当 context 长度超过某个阈值，系统不得不在内部再建一层“关于内部状态的索引”。这就是意识：一个在高维状态空间里动态分配注意力的元算法。<br />
它的工作是回答：此刻，哪一段记忆、哪一条假说、哪一项情绪值得被提升到全局广播？哪一些计算可以外包给小脑、基底节、肠道菌群？<br />
意识并不制造新能量，它只是让能量在更恰当的时机流向更恰当的动作。代价是极高的代谢账单：人脑占体重 2%，却耗掉 20% 的葡萄糖。因此，意识只在生存回报足够高时才出现。换句话说，意识是复杂系统在极端不对称环境中买下的“生存加速保险”。</p>
<p>五、生命：用不确定性换取自由<br />
如果宇宙是一台完全确定的自动机，所有未来态都已写在初始条件里，那么膜、智能、意识统统失去意义——没有差异，就没有选择；没有选择，就没有生命。<br />
幸亏量子涨落、混沌、测量误差让信息永远残缺。残缺留下缝隙，缝隙允许下注。生命在不确定里冲浪，把“继续存在”本身活成了意义。<br />
更妙的是：正因为信息永远不全，生命反而获得自由。自由不是推翻因果律，而是在因果链的缺口里做出不可被提前计算的选择；是在下一次观测降临之前，先对自己唱一段尚未被证伪的叙事。<br />
于是，自由不再是哲学家的奢侈品，而是信息残缺带来的工程剩余。它像膜两侧的离子差一样真实，可以被测量、被利用，也被下一代膜继承。</p>
<p>六、递归：膜的再生产<br />
故事并未结束。今天的人类在实验室里合成人工细胞，用 CRISPR 编辑膜蛋白；在计算机里训练千亿参数的大模型，把互联网当外部养料，把 GPU 当新的线粒体；在区块链上写下智能合约，让代码成为可编程的膜，隔离风险、封装信任。<br />
膜换了材质，却从未消失。它继续膨胀，继续把更大的外部差异翻译成内部可运算的结构，也继续让生命在不确定里下注、在残缺里生长。</p>
<p>七、尾声：回到那道最初的边界<br />
如果某天宇宙热寂，所有差异归零，最后一道膜也终将蒸发。但在那之前，生命会不断书写新的脚注：<br />
“我们以不对称为食，以不确定为翼；<br />
我们永远无法抵达真理，却永远在去往真理的路上；<br />
而那路上的每一次呼吸、每一道裂缝、每一个尚未证伪的假说——<br />
都是自由。”
<div style="margin-top: 15px; font-style: italic">
<p>转载请注明: 转自<a href="http://www.cslog.cn/">船长日志</a>, 本文链接地址: <a href="http://www.cslog.cn/Content/asymmetric-and-freedom/">http://www.cslog.cn/Content/asymmetric-and-freedom/</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.cslog.cn/Content/asymmetric-and-freedom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在线学习推演模型：在不确定中追索规则的智能方式</title>
		<link>http://www.cslog.cn/Content/online-learning/</link>
		<comments>http://www.cslog.cn/Content/online-learning/#comments</comments>
		<pubDate>Thu, 17 Jul 2025 04:30:52 +0000</pubDate>
		<dc:creator>船长</dc:creator>
				<category><![CDATA[人工智能]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[学习]]></category>

		<guid isPermaLink="false">http://www.cslog.cn/?p=1355</guid>
		<description><![CDATA[在这个充满不确定性的世界里，几乎所有的智能系统——无论是人脑、动物、企业组织还是 &#8230; <a href="http://www.cslog.cn/Content/online-learning/">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h1 data-start="59" data-end="84"><span style="font-size: 16px;">在这个充满不确定性的世界里，几乎所有的智能系统——无论是人脑、动物、企业组织还是AI模型——都在做着一件事情：</span><strong style="font-size: 16px;" data-start="141" data-end="169">从过去的局部经验中总结出规律，去试探未来的反馈。</strong></h1>
<p data-start="171" data-end="260">这种机制看似朴素，却蕴含着极为深刻的哲学与技术含义。我将它称为一种“在线学习推演模型”（Online Inductive Probing Model），并尝试从以下几个维度展开：</p>
<hr data-start="262" data-end="265" />
<h2 data-start="267" data-end="288">一、时间维度的单向性：我们只能用过去</h2>
<p data-start="290" data-end="346">无论是谁，都无法逃脱时间的箭头。我们做出所有判断的依据，<strong data-start="318" data-end="332">只能是过去已发生的事</strong>。未来尚未发生，也无从取样。</p>
<p data-start="348" data-end="362">更具体地说，任何推理或模型：</p>
<ul data-start="363" data-end="444">
<li data-start="363" data-end="377">
<p data-start="365" data-end="377"><strong data-start="365" data-end="377">只能使用历史数据</strong></p>
</li>
<li data-start="378" data-end="405">
<p data-start="380" data-end="405"><strong data-start="380" data-end="405">基于有限区域的信息（空间、语义或感知范围）</strong></p>
</li>
<li data-start="406" data-end="421">
<p data-start="408" data-end="421"><strong data-start="408" data-end="421">提出一种规则或结构</strong></p>
</li>
<li data-start="422" data-end="444">
<p data-start="424" data-end="444"><strong data-start="424" data-end="444">并在未来遇到反馈后进行修正或淘汰</strong></p>
</li>
</ul>
<p data-start="446" data-end="462">这就是最原始也最通用的学习方式。</p>
<hr data-start="464" data-end="467" />
<h2 data-start="469" data-end="492">二、无法证实，无法证伪：试探是唯一的方式</h2>
<p data-start="494" data-end="528">这套模型有个悖论：它既无法完全证实所推理的“规则”，也无法彻底证伪。</p>
<ul data-start="529" data-end="594">
<li data-start="529" data-end="547">
<p data-start="531" data-end="547">因为未来未到，验证永远是延后的；</p>
</li>
<li data-start="548" data-end="569">
<p data-start="550" data-end="569">而未来反馈往往不完全、不连续、不明确；</p>
</li>
<li data-start="570" data-end="594">
<p data-start="572" data-end="594">所以，一个假说只能“暂时有效”，直到它失效。</p>
</li>
</ul>
<p data-start="596" data-end="615"><strong data-start="596" data-end="615">这是一种永远在路上的认知模式。</strong></p>
<p data-start="617" data-end="628">我们只能不断“试探”：</p>
<ul data-start="629" data-end="660">
<li data-start="629" data-end="636">
<p data-start="631" data-end="636">抛出预测；</p>
</li>
<li data-start="637" data-end="644">
<p data-start="639" data-end="644">接受反馈；</p>
</li>
<li data-start="645" data-end="652">
<p data-start="647" data-end="652">修正模型；</p>
</li>
<li data-start="653" data-end="660">
<p data-start="655" data-end="660">再次预测。</p>
</li>
</ul>
<p data-start="662" data-end="708">这非常像贝叶斯更新，也像进化选择。你永远不能证明自己是对的，但可以不断修正偏差，靠近有效性。</p>
<hr data-start="710" data-end="713" />
<h2 data-start="715" data-end="731">三、提升学习效率的两条路径</h2>
<p data-start="733" data-end="763">既然这是个结构性困境，我们就只能在<strong data-start="750" data-end="758">试探效率</strong>上下功夫。</p>
<h3 data-start="765" data-end="787">1. 加快预测节奏：增加反馈密度</h3>
<p data-start="788" data-end="828">如果你能在短时间内做出更多“小预测”，哪怕是微小反馈，也能加快模型的迭代。比如：</p>
<ul data-start="829" data-end="886">
<li data-start="829" data-end="843">
<p data-start="831" data-end="843">股票市场中的高频交易策略</p>
</li>
<li data-start="844" data-end="861">
<p data-start="846" data-end="861">人类认知中的“快速验证小假设”</p>
</li>
<li data-start="862" data-end="886">
<p data-start="864" data-end="886">AI中的强化学习 agent 快速与环境互动</p>
</li>
</ul>
<h3 data-start="888" data-end="910">2. 增强感知能力：扩展输入维度</h3>
<p data-start="911" data-end="941">另一种方式是“装更多眼睛和耳朵”，也就是增加传感器和数据源：</p>
<ul data-start="942" data-end="1011">
<li data-start="942" data-end="967">
<p data-start="944" data-end="967">人工智能中，添加多模态输入（图像+语言+动作）</p>
</li>
<li data-start="968" data-end="989">
<p data-start="970" data-end="989">人类学习中，去倾听他人经验、跨领域观察</p>
</li>
<li data-start="990" data-end="1011">
<p data-start="992" data-end="1011">企业经营中，提升用户反馈、监控系统建设</p>
</li>
</ul>
<p data-start="1013" data-end="1053">本质上都是：<strong data-start="1019" data-end="1053">提升输入的覆盖面与密度，从而让模型拥有更多可参考的“过去”。</strong></p>
<hr data-start="1055" data-end="1058" />
<h2 data-start="1060" data-end="1093">四、架构的历史演进：在扩展有效 context length</h2>
<p data-start="1095" data-end="1147">从历史的视角看，人类所有关于“学习架构”的进化，本质上都围绕一个目标：<strong data-start="1130" data-end="1146">延长“有效上下文”的范围</strong>。</p>
<p data-start="1149" data-end="1233">从最原始的口口相传、记忆规则，到文字、书籍、数据库、互联网，再到今天的人工智能模型（如Transformer、GPT），不断扩大的都是我们能纳入推理系统的“过去内容”。</p>
<blockquote data-start="1235" data-end="1271">
<p data-start="1237" data-end="1271"><strong data-start="1237" data-end="1271">有效 context length = 可用于决策的经验范围</strong></p>
</blockquote>
<p data-start="1273" data-end="1334">AI系统里，我们从 RNN（短记忆）到 LSTM（门控记忆）到 Transformer（全局注意力），无不体现出这个趋势。</p>
<p data-start="1336" data-end="1350">而未来的发展，也会持续提升：</p>
<ul data-start="1351" data-end="1416">
<li data-start="1351" data-end="1371">
<p data-start="1353" data-end="1371"><strong data-start="1353" data-end="1361">时间跨度</strong>（处理更久远的过去）</p>
</li>
<li data-start="1372" data-end="1393">
<p data-start="1374" data-end="1393"><strong data-start="1374" data-end="1382">多维感知</strong>（整合更多形式的信息）</p>
</li>
<li data-start="1394" data-end="1416">
<p data-start="1396" data-end="1416"><strong data-start="1396" data-end="1404">状态空间</strong>（建模更复杂的外部世界）</p>
</li>
</ul>
<hr data-start="1418" data-end="1421" />
<h2 data-start="1423" data-end="1448">五、但 context 的扩大，也带来副作用</h2>
<p data-start="1450" data-end="1484">需要注意的是，并非“context 越长越好”。以下风险会随之而来：</p>
<ul data-start="1485" data-end="1560">
<li data-start="1485" data-end="1514">
<p data-start="1487" data-end="1514"><strong data-start="1487" data-end="1496">过拟合历史</strong>：模型过度相信过去规律，错失变化信号</p>
</li>
<li data-start="1515" data-end="1537">
<p data-start="1517" data-end="1537"><strong data-start="1517" data-end="1525">响应迟缓</strong>：记忆过重会拖慢反应速度</p>
</li>
<li data-start="1538" data-end="1560">
<p data-start="1540" data-end="1560"><strong data-start="1540" data-end="1548">信息冗余</strong>：噪音累积，信号反而稀释</p>
</li>
</ul>
<p data-start="1562" data-end="1595">所以，任何智能系统都需要在<strong data-start="1575" data-end="1587">记忆 vs 适应</strong>之间做动态平衡。</p>
<hr data-start="1597" data-end="1600" />
<h2 data-start="1602" data-end="1623">六、从本质看：这是所有智能的底层模式</h2>
<p data-start="1625" data-end="1661">你会发现，无论人类思维、公司决策，还是AI系统，几乎都遵循这个通用架构：</p>
<blockquote data-start="1663" data-end="1694">
<p data-start="1665" data-end="1694"><strong data-start="1665" data-end="1694">有限经验 → 提出模式 → 未来验证 → 反馈修正</strong></p>
</blockquote>
<p data-start="1696" data-end="1755">这就是一种“后验智能”（post-hoc intelligence），<strong data-start="1731" data-end="1755">在无法预知中不断调整自己，从而适应未来。</strong></p>
<p data-start="1757" data-end="1772">而“智能”的本质，可能就只是：</p>
<ul data-start="1773" data-end="1814">
<li data-start="1773" data-end="1785">
<p data-start="1775" data-end="1785">提出合理假设的能力；</p>
</li>
<li data-start="1786" data-end="1798">
<p data-start="1788" data-end="1798">快速验证假设的能力；</p>
</li>
<li data-start="1799" data-end="1814">
<p data-start="1801" data-end="1814">容忍错误并及时调整的能力。</p>
</li>
</ul>
<hr data-start="1816" data-end="1819" />
<h2 data-start="1821" data-end="1840">七、未来方向：更快、更广、更精准</h2>
<p data-start="1842" data-end="1858">我们真正要追求的，或许是这三点：</p>
<ol data-start="1859" data-end="1958">
<li data-start="1859" data-end="1896">
<p data-start="1862" data-end="1896"><strong data-start="1862" data-end="1873">更快的反馈循环</strong>：从年级考试 → 每日小测 → 实时眼动追踪；</p>
</li>
<li data-start="1897" data-end="1926">
<p data-start="1900" data-end="1926"><strong data-start="1900" data-end="1911">更广的感知范围</strong>：从单一维度 → 多模态融合；</p>
</li>
<li data-start="1927" data-end="1958">
<p data-start="1930" data-end="1958"><strong data-start="1930" data-end="1943">更精准的上下文建模</strong>：从纯数据 → 意义结构图谱。</p>
</li>
</ol>
<p data-start="1960" data-end="1977">也许这正是智能系统未来的发展路径。</p>
<hr data-start="1979" data-end="1982" />
<h2 data-start="1984" data-end="1995">小结：命名与比喻</h2>
<p data-start="1997" data-end="2014">我们可以为这种结构起个名字，比如：</p>
<ul data-start="2016" data-end="2190">
<li data-start="2016" data-end="2055">
<p data-start="2018" data-end="2055"><strong data-start="2018" data-end="2027">试探式智能</strong>（Probe-based Intelligence）</p>
</li>
<li data-start="2056" data-end="2096">
<p data-start="2058" data-end="2096"><strong data-start="2058" data-end="2068">后验推演模型</strong>（Post-hoc Inference Model）</p>
</li>
<li data-start="2097" data-end="2135">
<p data-start="2099" data-end="2135"><strong data-start="2099" data-end="2109">时间盲测系统</strong>（Temporal Blind Probing）</p>
</li>
<li data-start="2136" data-end="2190">
<p data-start="2138" data-end="2190"><strong data-start="2138" data-end="2150">延迟反馈学习架构</strong>（Delayed Feedback Learning Architecture）</p>
</li>
</ul>
<p data-start="2192" data-end="2196">它就像：</p>
<ul data-start="2197" data-end="2257">
<li data-start="2197" data-end="2211">
<p data-start="2199" data-end="2211">在雾中行走，靠回声定位；</p>
</li>
<li data-start="2212" data-end="2234">
<p data-start="2214" data-end="2234">在黑箱前试按按钮，根据灯光变化理解机制；</p>
</li>
<li data-start="2235" data-end="2257">
<p data-start="2237" data-end="2257">或者像盲人摸象，每一次触摸都是一次推理。</p>
</li>
</ul>
<p data-start="2259" data-end="2290">这是不完美的，但确实是<strong data-start="2270" data-end="2289">所有智能体正在使用的最现实方式</strong>。</p>
<div style="margin-top: 15px; font-style: italic">
<p>转载请注明: 转自<a href="http://www.cslog.cn/">船长日志</a>, 本文链接地址: <a href="http://www.cslog.cn/Content/online-learning/">http://www.cslog.cn/Content/online-learning/</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.cslog.cn/Content/online-learning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>测试和分析auto-gpt0.3</title>
		<link>http://www.cslog.cn/Content/auto-gpt-stable-0-3/</link>
		<comments>http://www.cslog.cn/Content/auto-gpt-stable-0-3/#comments</comments>
		<pubDate>Tue, 09 May 2023 18:19:36 +0000</pubDate>
		<dc:creator>船长</dc:creator>
				<category><![CDATA[人工智能]]></category>
		<category><![CDATA[autogpt]]></category>

		<guid isPermaLink="false">http://www.cslog.cn/?p=1351</guid>
		<description><![CDATA[上一次测试auto-gpt0.2.2，发现1：不停地重复在网上找和下载文件，结果 &#8230; <a href="http://www.cslog.cn/Content/auto-gpt-stable-0-3/">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>上一次测试<a href="https://github.com/Significant-Gravitas/Auto-GPT">auto-gpt</a>0.2.2，发现1：不停地重复在网上找和下载文件，结果还是没有能力把指定文件下载下来。<br />
2：我手动下载了文件，让它读取分析，发现读了之后马上报错自动退出了。说是提交给openai的token超字数了。。。</p>
<p>今天我又配置了当前最新的stable 0.3 auto-gpt，还是测试同样的任务，让它整理《红楼梦》中的小说人物关系图谱。<br />
首先，发现下载文件还是下载不了。跟0.2.2很像。<br />
没办法，我手动下载了文件给它。<br />
然后，发现它执行代码一定要在docker运行。我查了代码，修改成直接可以运行了。<br />
又然后，我发现它一直想执行还没保存的代码文件，我通过对话提示它先写好代码文件再执行文件。以后每次要执行代码我发现都要做这样的提示。显然里面有个逻辑问题。也许是execute_python_file命令应该对应一个新的文件，而execute_code应该创建一个新的文件，接的参数是代码内容，而不是文件名。操作的时候让代理先保存代码文件，然后执行。<br />
又又然后，我发现在访问代码时，openai.error.APIConnectionError，不知道是不是网络环境问题，遇到这个问题程序就中止了。我修改了代码，让它遇到问题后重试。<br />
最后，还是发现了tokens遇长的问题，我不知道哪里的代码又不严谨。。。到这里，愉快的一下午就快结束了。</p>
<p>看来这个任务还是很难完成。</p>
<p>目前看来，auto-gpt还十分不成熟，原因是，1里面的代码里的bugs非常多；2系统有几个如google查询，读写文件，执行代码等功能模块，但这几个模块的调动很不协调，操作很不连贯，它们的组合经常十分生疏，如同请一个有理论，但完全没有实践基础的几个技术人员一起完成一个大任务。</p>
<p>显然，在人工智能发展的路上，这些问题都会被解决。但现在而言，从效率角度看，在实际工作中用auto-gpt还是比较早的。auto-gpt在设计的时候，是用来完成通用任务的。我感觉现在来说，还需要很多的调整和磨合。让人工智能做不同的事，本身要学习经验。而让人工智能做重复的事，这可我感觉现阶段应该使用prompt+特定的任务代码+gpt的形式可能更实在一些。
<div style="margin-top: 15px; font-style: italic">
<p>转载请注明: 转自<a href="http://www.cslog.cn/">船长日志</a>, 本文链接地址: <a href="http://www.cslog.cn/Content/auto-gpt-stable-0-3/">http://www.cslog.cn/Content/auto-gpt-stable-0-3/</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.cslog.cn/Content/auto-gpt-stable-0-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>中文LLaMA Alpaca大语言模型在text-generation-webui和llama.cpp上的部署</title>
		<link>http://www.cslog.cn/Content/chinese-llama-alpaca-text-generation-webui-llama-cpp/</link>
		<comments>http://www.cslog.cn/Content/chinese-llama-alpaca-text-generation-webui-llama-cpp/#comments</comments>
		<pubDate>Fri, 05 May 2023 17:19:25 +0000</pubDate>
		<dc:creator>船长</dc:creator>
				<category><![CDATA[人工智能]]></category>
		<category><![CDATA[alpaca]]></category>
		<category><![CDATA[llama]]></category>
		<category><![CDATA[llama.cpp]]></category>
		<category><![CDATA[大语言模型]]></category>

		<guid isPermaLink="false">http://www.cslog.cn/?p=1344</guid>
		<description><![CDATA[中文LLaMA模型和指令精调的Alpaca大模型在text-generation &#8230; <a href="http://www.cslog.cn/Content/chinese-llama-alpaca-text-generation-webui-llama-cpp/">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div>
<p>中文LLaMA模型和指令精调的Alpaca大模型在text-generation-webui和llama.cpp上的部署<br />
LLaMA是facebook的meta公司放出来的大语言模型，这个模型的中文能力非常差。<a href="https://github.com/ymcui/Chinese-LLaMA-Alpaca" rel="noopener" target="_blank">Chinese-LLaMA-Alpaca</a>在原版LLaMA的基础上扩充了中文词表并使用了中文数据进行二次预训练，进一步提升了中文基础语义理解能力。目前已开源的模型版本：7B（标准版、Plus版）、13B（标准版）。这些版本可以在16G，甚至可以在8G内存的个人电脑上部署。似乎不用显卡。今天我在16G内存的个人笔记上部署了。这是记录。</p>
</div>
<div>
<p>由于笔记本电脑只有16G，所以我选择是LLaMA/Alpaca Plus版本（7B）版本。7B的模型占内存13GB，8bit量化后是7.8GB。</p>
</div>
<div>
<div></div>
<h2 data-heading="模型下载与合并">模型下载与合并</h2>
</div>
<div>
<p>部署需要<a href="https://github.com/facebookresearch/llama" rel="noopener" target="_blank">原版LLaMA模型</a>和中文LLaMA模型Chinese-LLaMA-Plus-7B与中文Alpaca模型Chinese-Alpaca-Plus-7B。三个模型要合并成一个模型。<br />
页面也提供了Colab在线合并的方式，在线合并的话就不用下载上面的三个模型，只要下载合并好的模型就可以了。</p>
<p><span id="more-1344"></span><br />
我的Colab免费账号内存比较低，所以我选择了下载模型后<a href="https://github.com/ymcui/Chinese-LLaMA-Alpaca/wiki/%E6%89%8B%E5%8A%A8%E6%A8%A1%E5%9E%8B%E5%90%88%E5%B9%B6%E4%B8%8E%E8%BD%AC%E6%8D%A2" rel="noopener" target="_blank">本地合并</a>。</p>
</div>
<div>
<p>注意，本地合并过程中要用到一个protobuf 3.20.0库。网页没有提及。</p>
</div>
<div>
<p>说是合并要用到13G内存，但在我的16G内存笔记上合并过程没有遇到问题。</p>
</div>
<div>
<div></div>
<h2 data-heading="text-generation-webui部署">text-generation-webui部署</h2>
</div>
<div>
<p><a href="https://github.com/oobabooga/text-generation-webui" rel="noopener" target="_blank">text-generation-webui</a>是一个网页界面的大语言模型工具。部署<a href="https://github.com/ymcui/Chinese-LLaMA-Alpaca/wiki/%E4%BD%BF%E7%94%A8text-generation-webui%E6%90%AD%E5%BB%BA%E7%95%8C%E9%9D%A2" rel="noopener" target="_blank">参看教程</a>。<br />
注意这个教程是针对没有合并模型的。如果模型合并了，只要加载合并好的一个模型就可以运行了。<br />
<code>python server.py --model llama-7b-hf --cpu</code></p>
<p><code></code><img class="aligncenter size-medium wp-image-1345" title="2023-05-05_181823" src="http://www.cslog.cn/wp-content/uploads/2023/05/2023-05-05_181823-502x600.png" alt="" width="502" height="600" /><br />
不知道是什么原因，我测试发现text generation webui的反应非常慢。发个你好要几分钟才回复。让它写个诗，几小时只写了几行。几乎没有可用性。不知道是不是我没有开启GPU模式的原因。</p>
</div>
<div>
<div></div>
<h2 data-heading="llama.cpp部署">llama.cpp部署</h2>
</div>
<div>
<p>text generation webui太卡了，我转向<a href="https://github.com/ggerganov/llama.cp" rel="noopener" target="_blank">llama.cpp</a>。<a href="https://github.com/ymcui/Chinese-LLaMA-Alpaca/wiki/llama.cpp%E9%87%8F%E5%8C%96%E9%83%A8%E7%BD%B2" rel="noopener" target="_blank">参考教程</a>。<br />
我是在windows 11下部署，所以要先安装<a href="https://github.com/skeeto/w64devkit/releases" rel="noopener" target="_blank">w64devkit</a>。在它里面运行make。然后参考上面的教程就可以了。<br />
我先对模型进行了8bit的量化。<br />
<code>quantize.exe ./zh-models/chinese_alpaca_plus_7B_pth/ggml-model-f16.bin ./zh-models/chinese_alpaca_plus_7B_pth/ggml-model-q8_0.bin 7</code></p>
</div>
<div>
<p>然后启动<br />
<code>main.exe -m zh-models/chinese_alpaca_plus_7B_pth/ggml-model-q8_0.bin --color -f prompts/alpaca.txt -ins -c 2048 --temp 0.2 -n 256 --repeat_penalty 1.3</code></p>
<p><img class="aligncenter size-medium wp-image-1346" title="中文LLaMA Alpaca在llama.cpp的表现" src="http://www.cslog.cn/wp-content/uploads/2023/05/2023-05-05_191558-720x525.png" alt="" width="720" height="525" /></p>
<p>llama.cpp的响应速度非常快。差不多几秒就回复了。但似乎回复的结果不是非常好，很多错误。看来这个模型的可用性还不是很高。而且回复经常中断。</p>
</div>
<div style="margin-top: 15px; font-style: italic">
<p>转载请注明: 转自<a href="http://www.cslog.cn/">船长日志</a>, 本文链接地址: <a href="http://www.cslog.cn/Content/chinese-llama-alpaca-text-generation-webui-llama-cpp/">http://www.cslog.cn/Content/chinese-llama-alpaca-text-generation-webui-llama-cpp/</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.cslog.cn/Content/chinese-llama-alpaca-text-generation-webui-llama-cpp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>将小爱同学（小米AI音箱）接入Home Assistant（基于红外遥控器）</title>
		<link>http://www.cslog.cn/Content/xiaomi-ai-box-2-home-assistant/</link>
		<comments>http://www.cslog.cn/Content/xiaomi-ai-box-2-home-assistant/#comments</comments>
		<pubDate>Fri, 02 Feb 2018 11:39:08 +0000</pubDate>
		<dc:creator>船长</dc:creator>
				<category><![CDATA[人工智能]]></category>
		<category><![CDATA[homeassistant]]></category>
		<category><![CDATA[小米]]></category>
		<category><![CDATA[智能家居]]></category>
		<category><![CDATA[树莓派]]></category>
		<category><![CDATA[硬件]]></category>
		<category><![CDATA[遥控器]]></category>

		<guid isPermaLink="false">http://www.cslog.cn/?p=1316</guid>
		<description><![CDATA[小米音箱（小爱同学）做的不错，但是目前功能上还是有很多限制，比如不能启动电脑。H &#8230; <a href="http://www.cslog.cn/Content/xiaomi-ai-box-2-home-assistant/">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>小米音箱（小爱同学）做的不错，但是目前功能上还是有很多限制，比如不能启动电脑。<a href="https://home-assistant.io/">Home assistant</a>是一个开放的智能家居平台，集成非常多的<a href="https://home-assistant.io/components/">模块</a>，比如<a href="https://home-assistant.io/components/wake_on_lan/">Wake on LAN模块</a>就可以实现通过网线唤醒电脑的功能。可惜目前不能通过小米音箱直接连接Home Assistant。好在小爱同学兼容自家的万能遥控器，我们想到了把Home Assistant设备变成一个遥控终端，通过一个红外万能遥控器和一个红外接收器做为一个桥接中介，实现小米音箱间接控制Home Assistant平台的目的。本文参考了<a href="https://bbs.hassbian.com/thread-2404-1-1.html">这个教程</a>。</p>
<h2>需要的东西</h2>
<p>运行Home Assistant的设备（电脑、NAS、树莓派等，我用的是树莓派2代）<br />
红外接收器（我使用的是一个通用USB接收器，树莓派用户可以DIY一个）<br />
<a href="http://item.mi.com/1144200006.html">小米（创米）万能红外线遥控器</a><br />
<a href="https://www.mi.com/aispeaker/?cfrom=search">小米AI音箱</a></p>
<h2>给Home Assistant设备添加红外遥控接收功能</h2>
<p>将红外接收器连接到home assistant设备上。确认红外设备存在，如<br />
<code><br />
pi@raspberrypi:~ $ ls /dev/lirc0<br />
/dev/lirc0<br />
</code></p>
<p>安装<a href="http://www.lirc.org/">红外线收发lirc程序</a>：<br />
<code><br />
pi@raspberrypi:~ $ sudo apt-get install lirc liblircclient-dev<br />
</code></p>
<p>测试红外线接收功能正常：<br />
<span id="more-1316"></span><br />
<code><br />
sudo mode2 -d /dev/lirc0<br />
</code><br />
运行上面命令后找一个红外遥控器对着接收器按任意键，应该可以收到类似这样的字符：<br />
<code><br />
Using driver default on device /dev/lirc0<br />
Trying device: /dev/lirc0<br />
Using device: /dev/lirc0<br />
Running as regular user pi<br />
pulse 2750<br />
space 750<br />
pulse 550<br />
...<br />
</code><br />
好，现在Home Assistant设备可以接收到红外遥控信息了。下一步，让Home Assistant和红外遥控器可以通信。</p>
<h2>让Home Assistant接收红外遥控数据</h2>
<p>随便给lirc指定一个接收的遥控器数据表，这里用的是xbox360的遥控器，你不需要有这个遥控器，因为后面可以用小米万能遥控器把它模拟出来。<br />
下载xbox360遥控器的数据表,把它设置到lirc:<br />
<code><br />
pi@raspberrypi:~ $ wget http://lirc.sourceforge.net/remotes/microsoft/Xbox360<br />
pi@raspberrypi:~ $ sudo mv Xbox360 /etc/lirc/lircd.conf<br />
</code></p>
<p>创建/etc/lirc/lircrc文件，内容：<br />
<code><br />
begin<br />
remote = Microsoft_Xbox360<br />
button = KEY_STOP<br />
prog = home-assistant<br />
config = KEY_STOP<br />
end<br />
begin<br />
remote = Microsoft_Xbox360<br />
button = KEY_PAUSE<br />
prog = home-assistant<br />
config = KEY_PAUSE<br />
end<br />
</code><br />
这里只以两个按键为例子，参看上面/etc/lirc/lircd.conf的内容，你可以多添加几个按键。</p>
<p>重启lirc<br />
<code><br />
pi@raspberrypi:~ $ sudo systemctl restart lircd.service<br />
</code></p>
<p>现在在米家app给小米万能遥控器添加Xbox360遥控器（使用搜索功能添加，里面有两个，我添加的是“微软DVD播放器”那个），现在测试<br />
<code><br />
pi@raspberrypi:~ $ ircat home-assistant<br />
</code></p>
<p>按遥控器上的停止按键，应该会收到相应的代码。<br />
<code><br />
</code><br />
现在米家app可以给home assistant设备发信息了，下一步要做的是根据这个信息，触发不同的动作。</p>
<h2>Home assistant根据遥控器指令触发动作</h2>
<p>编辑 HomeAssistant 的configuration.yaml文件，加入<a href="https://home-assistant.io/components/lirc/">lirc组件</a>，<br />
<code><br />
lirc:<br />
</code><br />
配置home assistant的自动化指令：<br />
<code><br />
automation:<br />
- alias: 打开灯<br />
trigger:<br />
platform: event<br />
event_type: ir_command_received<br />
event_data:<br />
button_name: KEY_PAUSE<br />
action:<br />
service: homeassistant.turn_on<br />
entity_id: group.a_lights<br />
</code><br />
上面的KEY_PAUSE就是刚刚配置的遥控器按键。action可以换成你想要的效果，我是帮来它来启动我的电脑了。重启homeassistant,让配置生效，现在对着树莓派按暂停播放键，就Homeassistant就会触发相应的动作了。</p>
<h2>让小米AI音箱控制万能遥控器</h2>
<p>先打开米家app，在底部点选“智能”，在“我在”tab中点右上角的“+”号创建新智能条目，在选择条件界面选择“手动执行”，选择“小米万能遥控器”-〈遥控模式〉-〈微软DVD播放器〉-〈暂停/播放〉-〈右上角“确定”〉设置你想要的名称，比如“启动电脑”<br />
好了。打开小米AI app，在底部点选“技能中心”-〈小爱训练计划〉-〈创建训练〉-〈为问题命名，比如“启动电脑”〉-〈设备控制〉-〈选择刚创建的“启动电脑”〉-〈打开〉，预览后保存。<br />
（相关的图文教程<a href="http://bbs.xiaomi.cn/t-13957311">点这里</a>）</p>
<p>好了。现在对着小米同学说“启动电脑”，小米音箱会指示小米万能遥控器发送一个KEY_PAUSE按键，这时home assisant收到后，就会触发启动电脑的动作了。</p>
<p>参看：<a href="https://www.hackster.io/austin-stanton/creating-a-raspberry-pi-universal-remote-with-lirc-2fd581">Creating a Raspberry Pi Universal Remote With LIRC</a><br />
另一种通过第三方平台桥接小爱同学和home assistant的方法： <a href="https://bbs.hassbian.com/thread-2404-1-1.html">https://bbs.hassbian.com/thread-2404-1-1.html</a>
<div style="margin-top: 15px; font-style: italic">
<p>转载请注明: 转自<a href="http://www.cslog.cn/">船长日志</a>, 本文链接地址: <a href="http://www.cslog.cn/Content/xiaomi-ai-box-2-home-assistant/">http://www.cslog.cn/Content/xiaomi-ai-box-2-home-assistant/</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.cslog.cn/Content/xiaomi-ai-box-2-home-assistant/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
