Total Pageviews

Thursday 25 April 2024

黄梅戏名曲-对花

胡同学的历史

 

内容创建平台程序(其实就是个人网站程序/独立博客程序)

 

A platform for content creators (Beta)

proselog.com

Development

Follow the steps to run it locally.

  1. Copy .env.example to .env
  2. Run postgres locally, the easiest way on mac is brew install postgresql, you can also use docker
  3. Install dependencies: pnpm i
  4. Initialize the database by running pnpm prisma db push
  5. Start dev server: pnpm dev
 from https://github.com/proselog/proselog

https://brite.proselog.com/,)

------------------------------------------

https://github.com/writefreely/writefreely

https://writefreely.org/start

https://writefreely.org/apps

https://github.com/writefreely/writefreely-swiftui-multiplatform

https://github.com/writeas/writeas-cli

https://github.com/writeas/writeas-cli/tree/master/cmd/wf

 

Tuesday 23 April 2024

航拍中国 -新疆

梦草原

 

馬蘭花開

 

-女主角秦怡可是美女啊

雷振邦,不是歌手而是电影音乐作曲名家。他是影视剧音乐作曲家雷蕾
("渴望”的作曲者)的父亲。

被称为"民乐圆舞曲"的《马兰花开》自从1956年问世一直流行到1960年代中期,
给人们留下深刻印象。

后来,文革鼙鼓动地来,惊破马兰花开曲,也惊破好多其他美好乐曲、歌曲、戏剧、
电影等文艺作品。
(这是套用白居易《长恨歌》形容安史之乱的诗句“渔阳鼙鼓动地来,惊破霓裳羽衣曲。”)

“我花开后百花杀”的文化大革命结束后,《马兰花开》等佳作回来了,
音乐受众“久旱逢甘雨,劫后遇故知”。 

但是,乐坛代有佳作出,各领风骚若干年。“好花不常开,好景不常在”。
多年以后,而今已经时过境迁,盛况不再。

尽管很多人听过《马兰花开》,但其中不少人不知道是雷振邦作曲。

这首轻音乐是1956年电影《马兰花开》的配乐.

 

chatgpt-mirai-qq-bot

  一键部署!真正的 AI 聊天机器人!支持ChatGPT、文心一言、讯飞星火、Bing、Bard、ChatGLM、POE,多账号,人设调教,虚拟女仆、图片渲染、语音发送 | 支持 QQ、Telegram、Discord、微信 等平台.

一款支持各种主流语言模型的聊天的机器人!

» 查看使用教程 »

Github stars Docker build latest Docker Pulls License


  • Discord 一群QQ 二群QQ 三群QQ 四群QQ 五群QQ 开发群
    会发布最新的项目动态、视频教程、问题答疑和交流。 加群之前先看这里的内容能不能解决你的问题。
    如果不能解决,把遇到的问题、日志和配置文件准备好后再提问。
  • 调试群 这个群里有很多 ChatGPT QQ 机器人,不解答技术问题。
猫娘问答 生活助手 文字 RPG
image image image

⚡ 支持

  • 图片发送
  • 关键词触发回复
  • 多账号支持
  • 百度云内容审核
  • 额度限制
  • 人格设定
  • 支持 Mirai、 go-cqhttp、 Telegram、Discord、微信
  • 可作为 HTTP 服务端提供 Web API
  • 支持 ChatGPT 网页版
  • 支持 ChatGPT Plus
  • 支持 ChatGPT API
  • 支持 Bing 聊天
  • 支持 Google bard
  • 支持 poe.com 网页版
  • 支持 文心一言 网页版
  • 支持 ChatGLM-6B 本地版

🤖 多平台兼容

我们支持多种聊天平台。

平台 群聊回复 私聊回复 条件触发 管理员指令 绘图 语音回复
Mirai 支持 支持 支持 支持 支持 支持
OneBot 支持 支持 支持 支持 支持 支持
Telegram 支持 支持 部分支持 部分支持 支持 支持
Discord 支持 支持 部分支持 不支持 支持 支持
企业微信 支持 支持 支持 不支持 支持 支持
个人微信 支持 支持 支持 不支持 支持 支持

🐎 命令

你可以在 Wiki 了解机器人的内部命令。

🔧 搭建

如果你是手机党,可以看这个纯用手机的部署教程(使用 Linux 服务器):https://www.bilibili.com/video/av949514538

AidLux: 仅使用旧安卓手机进行部署 执行下面这行命令启动自动安装脚本。
bash -c "$(wget -O- https://gist.githubusercontent.com/B17w153/f77c2726c4eca4e05b488f9af58823a5/raw/4410356eba091d3259c48506fb68112e68db729b/install_bot_aidlux.sh)"

部署教程

Linux: 通过快速部署脚本部署 (新人推荐) 执行下面这行命令启动自动部署脚本。 它会为你安装 Docker、 Docker Compose 和编写配置文件。
Linux: 通过 Docker Compose 部署 (自带 Mirai) 我们使用 `docker-compose.yaml` 整合了 [lss233/mirai-http]() 和本项目来实现快速部署。 但是在部署过程中仍然需要一些步骤来进行配置。
Linux: 通过 Docker 部署 (适合已经有 Mirai 的用户)
Windows: 快速部署包 (自带 Mirai/go-cqhttp,新人推荐)

我们为 Windows 用户制作了一个快速启动包,可以在 Release 中找到。

文件名为:quickstart-windows-go-cqhttp-amd64.zip(推荐) 或者 quickstart-windows-mirai-amd64.zip

Mac: 快速部署包 (自带 Mirai,新人推荐)
手动部署

提示:你需要 Python >= 3.11 才能运行本项目

  1. 部署 Mirai ,安装 mirai-http-api 插件。

  2. 下载本项目:

git clone https://github.com/lss233/chatgpt-mirai-qq-bot
cd chatgpt-mirai-qq-bot
pip3 install -r requirements.txt
  1. 参照项目文档调整配置文件。

  2. 启动 bot.

python3 bot.py

[广告] 免费 OpenAI API Key

你可以在这里获取免费的 OpenAI API Key 测试使用。

🕸 HTTP API

在 `config.cfg` 中加入以下配置后,将额外提供 HTTP API 支持。

🦊 加载预设

如果你想让机器人自动带上某种聊天风格,可以使用预设功能。

我们自带了 猫娘正常 两种预设,你可以在 presets 文件夹下了解预设的写法。

使用 加载预设 猫娘 来加载猫娘预设。

下面是一些预设的小视频,你可以看看效果:

关于预设系统的详细教程:Wiki

你可以在 Awesome ChatGPT QQ Presets 获取由大家分享的预设。

你也可以参考 Awesome-ChatGPT-prompts-ZH_CN 来调教你的 ChatGPT,还可以参考 Awesome ChatGPT Prompts 来解锁更多技能。

📷 文字转图片

在发送代码或者向 QQ 群发送消息失败时,自动将消息转为图片发送。

字体文件存放于 fonts/ 目录中。

默认使用的字体是 更纱黑体

🎙 文字转语音

自 v2.2.5 开始,我们支持接入微软的 Azure 引擎 和 VITS 引擎,让你的机器人发送语音。

提示:在 Windows 平台上使用语音功能需要安装最新的 VC 运行库,你可以在这里下载。`

🎈 相似项目

如果你自己也有做机器人的想法,可以看看下面这些项目:

本项目基于以上项目开发,所以你可以给他们也点个 star !

除了我们以外,还有这些很出色的项目:

 from https://github.com/lss233/chatgpt-mirai-qq-bot

(https://github.com/lss233/chatgpt-mirai-qq-bot/releases)

SoftwarePilot


SoftwarePilot is an open source software suite to support aerial systems. SoftwarePilot allows users to connect consumer DJI drones to programmable Java routines that include access to computer vision and deep learning software packages like OpenCV, DLIB, and Tensorflow.

www.reroutlab.org/softwarepilot

SoftwarePilot is an open source middleware and API that supports aerial applications. SoftwarePilot allows users to connect consumer DJI drones to programmable Java routines that provide access to the drones flight controller, camera, and navigation system as well as computer vision and deep learning software packages like OpenCV, DLIB, and Tensorflow.

SoftwarePilot comes with a dockerfile and installation scripts for all requisite software, and an Android-x86 VM to communicate with DJI drones from most systems.

SoftwarePilot provides sample routines and demos ranging from simple flight control applications to fully autonomous aerial systems. A simulation framework for fully autonomous aerial systems that use SoftwarePilot is also provided. The simulation framework can be used to aid development and profiling of complicated aerial systems.

Getting Started

Please review our comprehensive user guide here for installation instructions, and our development guide here to learn about adding to SoftwarePilot.

Prerequisits

The goal of SoftwarePilot is to be as accessible as possible to anyone with a drone. Therefore, it only requires a basic laptop with the following specifications:

  • At least 4GB of ram
  • A 2GHz processor
  • WiFi capabilities
  • 10 GB of available disk space
  • Linux, Windows, or MacOS

Software prerequisites include:

Built With

  • DJI-SDK - To interact with DJI drones
  • Java - To write the API between DJI drones and our programmable routines
  • Python - For machine learning routines and simulation
  • Docker - For portability
  • VirtualBox - To run our virtual machine
  • Tensorflow - For custom deep models
  • Dlib - For facial recognition
  • OpenCV - For image processing
  • Android-x86 - To execute DJI-SDK apps on most hardware
  • Android - To use the DJI-SDK

Authors

See also the list of contributors who participated in this project.

from https://github.com/boubinjg/SoftwarePilot

 

umami,统计网站访问数据的程序

Umami is a simple, fast, privacy-focused alternative to Google Analytics.

umami.is

Getting started

A detailed getting started guide can be found at https://umami.is/docs/

Installing from source

Requirements

  • A server with Node.js version 16.13 or newer
  • A database. Umami supports MySQL and Postgresql databases.

Install Yarn

npm install -g yarn

Get the source code and install packages

git clone https://github.com/umami-software/umami
cd umami
yarn install

Configure umami

Create an .env file with the following

DATABASE_URL=connection-url

The connection url is in the following format:

postgresql://username:mypassword@localhost:5432/mydb

mysql://username:mypassword@localhost:3306/mydb

Build the application

yarn build

The build step will also create tables in your database if you are installing for the first time. It will also create a login user with username admin and password umami.

Start the application

yarn start

By default this will launch the application on http://localhost:3000. You will need to either proxy requests from your web server or change the port to serve the application directly.

Installing with Docker

To build the umami container and start up a Postgres database, run:

docker compose up -d

Alternatively, to pull just the Umami Docker image with PostgreSQL support:

docker pull ghcr.io/umami-software/umami:postgresql-latest

Or with MySQL support:

docker pull ghcr.io/umami-software/umami:mysql-latest

Getting updates

To get the latest features, simply do a pull, install any new dependencies, and rebuild:

git pull
yarn install
yarn build

To update the Docker image, simply pull the new images and rebuild:

docker compose pull
docker compose up --force-recreate
from https://github.com/umami-software/umami 
-------

搭建umami ,收集个人网站的统计数据

教你如何免费搭建和使用美丽的 umami 网站统计服务,和 Google Analytics 说再见。
 
我想查看一下网站的统计数据,在 Google Analytics 上操作了一番,发觉自己已无法忍受这个复杂且迟缓的老旧产品,这让我开始思考有没有更好的解决方案。

我首先想到的是切换到另一家 hosting 的网站统计服务,如果可以的话,最好能有免费额度。然而开公司并不是做慈善,Google 之所以开放 Analytics 免费使用,除了本身体量足够大、边际成本够低之外,也因为网站统计与其核心的广告业务是密不可分的,Google 乐于让尽可能多的网站使用 Analytics,以得到可以推动广告和搜索业务发展的数据。果不其然,目前风评比较好的服务如 fathom 都没有免费套餐,价格也不便宜;plausible 价格较低,并且提供开源可部署的版本,这让我开始考虑自建统计服务的可行性。

要选择一个 self-hosted 网站统计服务,我有以下几个考量:

  • 实现语言:我非常倾向于 JavaScript 的实现,这并非出于我对它更加熟悉或者偏爱,而是因为近年来 Cloudflare 在 serverless 和 edge computing 领域不断深耕,推动了一系列基于 JavaScript 的运行环境和基础设施的发展,最近还联合 Vercel 等友商成立了 WinterCG 社区组织,让我看到了 JavaScript 一站式云端开发部署的未来。我自己也尝试过 Workers 开发,体验很好,免费额度充裕。如果一个服务是 JavaScript 实现,就有在 Workers 上部署的可能性。
  • 数据库:最好是 SQLite。SQLite 的存储基于单文件,非常适合小型服务的开发部署。Litestream 的存在让基于 S3 等对象存储的低成本数据库维护成为可能。
  • 便于部署:有官方维护的 docker image,或提供 PaaS/Serverless 平台的一键部署模板
  • 尊重数据隐私:其实 self-hosted 统计服务产生的目的之一就是为了抵制商业服务滥用用户数据,因此这一点大部分项目都可以满足,稍加注意即可。
  • ublock:作为一个 webmaster,肯定希望统计数据越精确越好,因此这个服务得有绕过 ublock 拦截的能力。虽然我个人也会使用 ublock 拦截各种 tracker,但 self-hosted 统计服务本身不会过度收集用户数据,更不会将其用于商业目的,可以理直气壮地想办法确保其正常加载。

经过一番调查,我选择了 umami,它基本满足以上所有需求:

  • 前后端全部使用 TypeScript 和 Next.js 开发
  • 数据库是 PostgreSQL,我比较喜欢,可以接受
  • 项目页面有个大大的 “Deploy on Railway”,也有 docker image
  • 项目 Slogan 就是 “privacy focused”

    Umami does not collect any personally identifiable information and anonymizes all data collected.

  • 提供 TRACKER_SCRIPT_NAME 环境变量用于自定义 script 名称,可以绕过 ublock 的默认规则

择日不如撞日,选定工具后我立刻开始尝试部署。umami 的部署流程是如此顺滑,只花了大概 15 分钟,我就确信自己做了一个十分正确的选择。

部署说明

我之前就对 Railway 有所了解,所以直接点击 “Deploy on Railway” 按钮开始部署流程。

Railway 是一个 PaaS 平台,可运行 JavaScript, Python, Go 等多种语言,提供 Redis, MySQL, MongoDB 等主流数据库存储。由于支持全面、界面友好,加上和 Cloudflare 一样有充裕的免费额度,足够个人项目免费使用,Railway 一直是我心中最好的 PaaS 之一。如果你有兴趣,欢迎通过我的 referral link 注册。

umani 有一篇 Running on Railway 文档,我遵照这个流程很快就完成了初步部署。其实只有一个 HASH_SALT 需要输入,其他只需点点点即可。

Railway Project 创建后,在管理界面可以看到两个 block,左边是数据库实例,右边是 umami 的后端服务。

安装依赖

在等待 umami 的镜像构建和部署的过程中,我们可以在命令行进行一些其他工作。

打开命令行,使用以下命令安装 Railway CLI 和 pgsql 两个软件依赖。

brew install railwayapp/railway/railway
brew install libpg

完成后,将 libpg 的 bin 路径添加到 PATH 中,在 .zshrc.bashrc 中添加一行:

export PATH="$PATH:/opt/homebrew/opt/libpq/bin"

你可以通过执行 type pgsql 确认 pgsql 是否存在。

更新数据库

Railway 在创建 Project 时,会将 umami 的代码复制到在你的 GitHub 账户所创建的名为 umami 的仓库中,我们需要先将此仓库 clone 下来:

git clone git@github.com:username/umami.git

进入 umami 目录,执行以下命令,登录 Railway CLI 并完成链接:

cd umami
railway login
railway link

这一步完成后,可以通过 railway variables 看到 umami 服务的环境变量,确认 CLI 可以访问到线上数据。

DATABASE_URL:        postgresql://postgres:xxxxxxxxx@containers-us-west.railway.app:6595/railway
DISABLE_TELEMETRY:   1
HASH_SALT:           xxXXxxXXxxXXxx
HOSTNAME:
PGDATABASE:          railway
PGHOST:              containers-us-west.railway.app
PGPASSWORD:          xxXXxxXXxxXXxx
PGPORT:              6595
PGUSER:              postgres
PORT:                3000

执行以下命令,为 umami 创建表格、添加初始数据。注意要将 bash variable 替换为上文中的数据:

railway run psql -h $PGHOST -U $PGUSER -d $PGDATABASE -f sql/schema.postgresql.sql

配置服务

数据库初始化完毕后,回到 Project 管理界面,确认 umami 部署完毕,即可打开服务的主页。

更换密码

使用初始用户名密码 admin:umami 登录进去,然后立刻到 Settings > Accounts 界面更换一个强密码。

绑定个人域名

在 Project 管理界面点击 umami,选择 Settings,在 Service Domains 下添加个人域名。

打开域名的 DNS 服务商,根据 Railway 中的提示,为自定义域名添加 CNAME 记录。 

等待几分钟,生效后 Railway 中会显示上图所示的 ✅ 符号。

修改脚本名称

为了避免 umami 被 ublock 误杀(有的规则集中有匹配 umami 的正则),还需要为它的统计脚本更换一个名称。Environment variables 文档中的 TRACKER_SCRIPT_NAME 提供了这一功能。

再次进入 Railway,打开 umami 的 Variables 选项卡,按下图所示添加环境变量,我使用的名称为 oishii,可以更换为任意非 tracker 特征词汇。

保存 Variables 后,等待新的部署完成,即可生效。

接入个人网站

一切准备就绪,我们重新使用自定义域名和修改后的密码登录 umami。

要进行统计,第一件事情是添加一个 Website。操作非常简单,读者可以参考 Add a website 文档来进行。唯一需要注意的是 Enable share URL 选项,如果你想将自己网站的统计数据分享出去,则需要勾选之。

添加完成后,点击网站列表中对应网站的 Get tracking code 按钮,在浮窗中获得需要加入到网站 HTML 中的代码。

需要注意将 src 结尾的 umami.js 替换为 $TRACKER_SCRIPT_NAME.js

复制代码并添加到自己个人网站的 <head> 标签下的任意位置,由于使用了 defer 属性,这个 script 不会对网页加载造成阻塞。

网站更新完成后,呼朋唤友点击访问一番,就可以看到 umami 清晰、美观的统计数据了。

 

 

 

 

 

 

 

 

 

 
 

 

杨小凯的一生短暂,却是世间罕见的传奇


何与怀

2004年7月7日清晨7时49分,有一位华人在墨尔本家中平静地离开了这个世界。

澳大利亚华人社区,大概没有很多人知道这位离世的华人曾经名叫杨曦光,他们大概不清楚曾经生活在身边的这位华人是世界著名的大师级的经济学家,不明白这位华人短暂的一生就是世间一个罕见的传奇——他不到二十岁时就以一篇文章震惊中国大陆的权力中心;他坐过十年冤狱却在狱中自学成才;他没有上过大学却创立了国际性学派;在当今中国大陆的政治语境中,他大概也要归为“持不同政见者”,但他的经济学、政治学、甚至神学的观点可能不容正在处于社会转型期的中国精英所忽视……

这位华人可惜英年早逝,只活了五十五岁,留下一大堆未竟事业。“天妒英才”这一句被用滥了的悼词,用在这位现名叫杨小凯的教授身上可能并不合适,因为他生前已经是一位基督徒,但我对他的过早谢世,真是感到万分的痛惜和悲怆!


一,〈中国向何处去?〉:一篇文章震惊中国权力中心


小凯原来是他的乳名,他的学名是杨曦光。1968年初,在那个荒唐混乱险恶的年月,这个名字曾经流传一时,为中国大陆许多人——从最高层到最底层——所知道,虽然于不同的人揭示的是不同的意义。

当时,随着“文革”汹涌而诡谲的铺开,杨曦光,一个十几岁的湖南长沙一中的学生,竟然过于早熟地严肃认真思考中国深层的政治与社会问题,包括“文革”的实质、对毛泽东思想的新理解、对中共组织本身的结构、对中国的前途与发展方向,等等。在他写出的那批在当时左得出奇却又大逆不道的论文中,最具震撼力的是那篇近一万八千字的〈中国向何处去?〉。文章完稿于1968年元月6日。几天之后,元月12日,文章以“省无联一中红造会钢三一九兵团‘夺军权’一兵”的名义油印刊出。

这篇文章刊出时加有一注:“这是一份徵求意见搞,现在公开发表是否适宜?是否能代表〈“极左派”公社成立宣言〉?怎样进一步修改?请阅后把意见详细写在每页右边空白处,请于廿日前将本稿退还发行者。”然而,这份印了八十份、只发出去二十份的不定稿不胫而走,数天之内便以各种方式传到全国各地。杨曦光立时在湖南以及其他省份成为如雷贯耳的风云人物。

在当时神州大地浓重弥漫的“巴黎公社热”中,杨曦光也从“巴黎公社”经验里找到了灵感。他在文章中指出:


引起无产阶级文化大革命的基本社会矛盾是新的官僚资产阶级的统治和人民大众的矛盾,这个矛盾的发展和尖锐化就决定了社会需要一个较彻底的变动,这就是推翻新的官僚资产阶级的统治,彻底砸烂旧的国家机器,实现社会革命,实现财产和权力的再分配——建立新的社会——“中华人民公社”,这也就是第一次文化大革命的根本纲领和终极目的。

……

在巴黎公社式的新社会中,这个阶级将被推翻,这已被一月革命、八月风暴出乎庸人预料的巨大的变动以铁的事实证实了,起而代之的是在推翻这个腐朽阶级的斗争中革命人民自然形成的有真正无产阶级权威的干部,他们是公社的一员,没有特权,在经济上与一般群众一样的待遇,可以随时根据群众的要求撤换。


“巴黎公社热”的始作俑者正是“伟大领袖”毛泽东。杨曦光当时也是毛泽东个人崇拜的拥护者——〈中国向何处去?〉正是以“毛泽东主义万岁!”的口号结尾的。他的这篇大作,主旨是捍卫“毛主席无产阶级革命路线”,鼓吹彻底的革命,推翻“新的官僚资产阶级的统治”即是周恩来总理及其手下的统治,建立巴黎公社式的政体。但是,杨曦光他们的极左思潮,却不合时宜干扰了伟大领袖的“战略部署”。而且,他的大文中所运用的“揭露用革命誓言欺骗群众的行为最好的方法”并以此“分析在这些革命发生了的和正在发生的阶级变动”(这也是按列宁的思路),而且断然提出“推翻”什么什么的战斗口号,对中共当权者显然是太过危险太过可怕了。这岂仅是一株“大毒草”?!这亦可能变成一场足以冲破神圣庙堂的滔天洪水!

镇压发生在1968年元月24日。当天晚上九点起,周恩来、陈伯达、康生、江青等大批中央领导人,在北京人民大会堂湖南厅内接见包括华国锋在内的湖南省革命委员会筹备小组成员与湖南省一些造反派组织代表,就宣布镇压湖南“省无联”问题,作了一些很严肃、语气很重的讲话与指示。有着“党内头号理论家”桂冠的康生,在其讲话中,几次点到了杨曦光与〈中国向何处去?〉一文,说那是“反革命的‘战马悲呜’”。康生还断言说:“我有一个感觉,他(指杨曦光)的理论,绝不是中学生、甚至不是大学生写的,他的背后有反革命黑手!”

于是,在毛泽东授意下,周恩来等人在全国展开了对〈中国向何处去?〉的大规模批判。

1968年2月,杨曦光作为要犯而被抓进监狱,关在长沙市公安局左家塘看守所。母亲被怀疑就是康生所谓的“黑手”“陈老师”(她刚好姓陈),受尽批斗凌辱后悬梁自缢,身为高干的父亲则被关押,一个妹妹下放到山区,另一个妹妹去投靠亲戚,哥哥也被开除公职赶到乡下去了。此外,杨案还连累一大批不相干的人。

1969年10月,杨曦光经一年零八个月的拘留后转为正式逮捕;十一月,被以反革命罪判刑十年,押往岳阳建新劳改农场“服刑”。

2-当年对杨小凯的逮捕令

当年对杨小凯的逮捕令。
杨曦光当时年仅二十一岁。

二,从中学生红卫兵思想家变成经济学家:杨曦光在十年冤狱中自学成才

十年冤狱,自然是杨曦光一生中一段最黑暗、最苦难的岁月。但他没有被暗无天日的牢狱生活摧毁,没有放弃对中国命运的探索以及自觉的责任感。他选择知识,选择学习,以极大的毅力完成入狱时作出的人生规划。十年里,杨曦光做了五六十本读书笔记,还写了一个电影文学剧本。如人们所说,学习知识的途径与方法,一般人大致差不多。但杨曦光以一个中学生水平的文化起点,又背负异常沉重的人生压力,并是在一个荒唐险恶的时代与不具任何人权条件的劳改队里,却一步步用自学方式读完了哲学、英语、数学、机械与经济学等大学课程,这绝对是寥若晨星,甚至绝无仅有!当然,杨曦光也万幸地碰到一个难得的机遇——监狱里充满了各式各样学富五车却因政治问题入狱的知识分子,他们都成了杨曦光的老师和启蒙者,特别是其中那位在1970年就被枪毙了的《湖南农民报》总编刘凤祥。

杨曦光的质疑精神与生俱来,个人又经历这种不平常的际遇,他自然不相信当时流行的、只能顶礼膜拜的政治经济学。在没有西方新古典经济学的训练之下,他开始了与世隔绝中的自由思考。他在狱中甚至自己推导出了戈森第二定律、层级理论、纳什议价模型以及劳动分工理论。他后来不无自我打趣地说:

“我以为这些都是自己的伟大发现,但当我能看到更多书时,才发现这些思想早就被西方经济学家发展成数学模型。不过,可庆幸的是,这些是自己想出来的东西,‘英雄所见略同’,我也是英雄之一了!”


杨曦光读罢《资本论》之后,心中便期望未来成为一个经济学家。他当时有三个想法:一是把使用价值在价值论中的重要性搞清;二是把分工问题糅合到价值理论中去;三是把价值理论数学化。

牢狱经历使杨曦光发生巨大转变。他日后说,“以前我关心的问题是‘什么是好的,什么是坏的,这个世界应该怎样’。在监狱里我问的却是:‘这个世界会怎样发展?’”杨曦光已完全没有坐牢前的理想主义了。他转而相信人判断自己所追求的价值标准会随历史而变化,所以历史会怎么发展远比理想的目标更重要。“最坏的事也许就发生在我们一生的时间内,因此关于好坏是非的主观判断没有任何意义,如何适应环境生存下去才是重要的事情。”——这是他当时在狱中的真实感受。

……

1978年4月,杨曦光刑满释放。

此时,四人帮倒台已一年半,但还是没有一个单位敢录用这位著名“反动”文章的作者。他在家闲居了一年。

也是在这一年,他决定埋葬“杨曦光”,恢复使用乳名“杨小凯”。

杨小凯后来找到工作,但只是在湖南新华印刷二厂当一名校对工。

1979年,杨小凯报考中国社会科学院经济学实习研究员,但被拒绝参加考试。一九八零年,他再次报考,终于获得参加数量经济学考试的机会,后被录取为实习研究员。

所里安排杨小凯住在一栋宿舍的小房子,除了一张床和一张小桌子之外连个转身的地方都没有。可他却处之泰然。他总说,这里比监狱条件好多了。杨小凯在社科院数量经济研究所美其名曰“工作”了两年,实际上在那个地方没有人瞧得起他,也没有人管他,他被迫独来独往。就是在这里,孤独的杨小凯开始展示了他过人的才华,他出版了《经济控制论初步》,并发表了若干关于经济体制改革和其他经济问题的文章。

1982年,在时任武汉大学校长刘道玉的全力帮助下,杨小凯被武大聘为助教,一年之后,又被提升为讲师。这个期间,杨小凯出版了《数理经济学基础》和《经济控制理论》两本著作。这时,他又碰到人生一个机遇。他估计的一些计量经济模型未能在国内引起反响,却获得了当时来武大访问的普林斯顿大学邹至庄教授慧眼赏识。于是开始了他人生另一条新的历程。

杨小凯生命后二十年的轨迹,记录了他新的奋斗新的成就:

1983年,考入美国普林斯顿大学经济学博士研究生;

1987年,论文通过答辩,之后在耶鲁大学经济增长中心做了一年的博士后;

1989年,任澳洲莫纳什大学高级讲师;担任数家美国与澳洲一流经济学期刊的匿名审稿人;

1992年,成为莫纳什大学正教授;出版专著《专业化与经济组织》一书;

1993年,被澳洲社会科学院选为院士;

1994年,出任美国路易维尔大学经济系教授、哈佛大学国际发展中心客座研究员;

1995年,出任台湾大学客座教授;

1996年,任台湾“中央研究院”客座研究员;

1997年,任美国《发展经济学评论》编辑;在中国出版《当代经济学与中国经济》一书;

1998年,任哈佛大学客座教授;出版了令国际经济学界关注的《经济学原理》一书;

2000年,升任莫纳什大学讲座教授……

就这样,这个当年中学生红卫兵思想家、一个曾在黑暗囹圄中艰难地度过了十年光阴的青年人,现在以其成果已成为国际经济学界中有开创意义的“第三代”的一位代表。


三,“超边际经济学”:没有上过大学却创立了国际性学派

按照国际经济学界内行人的说法,杨小凯如果不是英年早逝,极有可能成为第一位为澳大利亚赢得诺贝尔经济学奖的学者。他学术上的成就怎么形容都不过份。他在整个经济学的历史上将具有重要的地位,其影响既深且远,今日尚无法充份估计。


当年《经济学原理》出版时,便被国际经济学界认为是自马歇尔、萨谬尔森以来的第三代经济学教科书的代表作。该书的匿名审稿人这样评论:

这一研究激动人心,令人屏息以视。杨是世上少有的几个可以思考这类问题的人之一,他更是世界少有的能解决这类问题的人之一。这一工作具有原创性和新颖性。他正在迅速建立起他作为主要理论经济学家之一的国际名声。

1986年诺贝尔奖得主、公共选择理论的代表人詹姆斯.布坎南(James Buchanan)最赞赏杨小凯了,特别是杨和他的同事黄有光教授这几年所作的叫做“超边际分析”(infra-marginal analysis)的研究。两年前布坎南到莫那什大学访问,当着校长的面就说,这是当今全世界经济学最重要的、最有意思的研究。他认为杨是目前世界上最好的经济学家之一。

的确,按照国际经济学界不少人的意见,超边际分析是杨小凯此生最主要的、可惜也是最后的贡献。杨小凯自豪地把他的新框架称之为“超边际经济学”(有别于超边际分析)。如以黄有光的话来形容,这个新框架对他像是亲生孩子,是与患难结发妻子生的唯一孩子。

市场和分工互为因果的关系,以及分工的发展对生产效率和经济增长的至关重要的作用,古典经济学的代表亚当.斯密早已指出。可是分工理论难于数学化,因而难以结合到新古典经济学的一般均衡理论或增长理论中去。因此,到了现代经济学家手中,除了在国际贸易等有限的领域,一般不再强调分工及其对效率和增长的意义。在讨论增长的源泉时,大家注重的是劳动、资本、技术进步,或人力资本等相对来说比较容易数学化的因素。而杨小凯,作为新兴古典经济学派的代表,把经济学回溯到亚当.斯密的分工和交易理论并把其发扬光大。他运用新的超边际分析和最新发展的数学方法,在新框架内,统一地推导和阐释目前所谓的微观、宏观、贸易、发展、产权等各种分支经济学。

内行人评论说,超边际分析是理解杨小凯学术思想的钥匙。它高于边际分析又包含着边际分析。它首先研究的是分工水平和制度方向的问题,然后再涉及到某一制度框架下的资源配置均衡。反映在数学上,边际分析只考虑内点解(只涉及数量消长)的最优决策值,而超边际分析还要比较角点解(涉及到不同制度方向)的最优决策值。也可以说,边际分析描述的是经济均衡,而超边际分析描述的是经济均衡的跳跃。

可见,超边际分析的解释能力和应用范围远远优于边际分析。但因为处理角点解的数学工具直到二十世纪五十年代才发展起来,所以传统经济学的局限迟迟没有突破。也许是出于机遇、勤奋和天才,杨小凯首先找到了寻求最优角点解的方法,因而能够在一个统一的理论框架下运用超边际分析阐释所有的分支经济学。

在杨小凯看来,自由市场的最主要功能,不在于寻找资源的最优配置,而在于寻找最有效率的分工水平,以此决定市场网络大小、人们购买力高低、生产力高低、商业化程度以及贸易依存度。而市场发挥这一功能的两大条件是择业自由和价格自由。

杨小凯还指出,随着分工的发展,人们必须交换越来越多的商品,因而交易费用也会增加。所以,他认为,交易效率的提高非常重要,否则会限制分工的深化。进而,在此问题上,杨小凯涉及了产权理论、企业理论、信息的透明、内生交易费用的减少、道德风险的规避、城市化、技术进步、保险的发展,直至宪政的确立。这里呈现一条清晰的逻辑——好的政治-经济制度能大大提高交易效率,因而大大促进分工的发展和深化,带来经济的长期繁荣和社会的长期稳定。


显然,杨小凯的经济学思想极其丰富,或者说跨越了一般经济学范畴。当然,杨小凯有些思想还有待更严谨的证明;也并非所有经济学家都同意他的所有观点。例如,张五常对杨小凯的超边际分析就尚未信服。但这位很少钦佩别人的教授也说杨小凯是他遇到过的最有预感天份、能够知道什么是重要思想的中国学子。正是聪明者易找,有预感而又知道何为重要者难求也。他深有感触地说,只有上帝知道,如果杨小凯没有坐牢十年,老早就有像他张五常那种求学的际遇,杨在经济学的成就将会是怎样?!拿个诺贝尔奖不会困难吧。


四,“后发优势”与“后发劣势”;一场具有经典意义的论争

人们都说,就全球华人经济学家而言,对中国的政治变迁和经济改革有切身体验和真知灼见者,是少数;能对现代经济学做出理论性突破或挑战现有理论体系者,是极少数;而同时具备这两个条件者,更是稀缺得如凤毛麟角。杨小凯,这位具有传奇色彩的华裔经济学家,却有幸成为其中之一。

正如他们指出,杨小凯的经济学思想有着强烈的处境意识——中国的历史和现实是他的理论的真实背景。

在本世纪初这几年,杨小凯和林毅夫关于“后发优势”“后发劣势”之争在中国大陆兴起,并大大开阔全国经济学家的眼界和思路。这个论争可谓具有经典意义。

林毅夫也是一位了不起的传奇人物——他从当年一个叛逃过来的台湾军队的连长变成为今天能够影响北京经济政策的智囊人物。这位智囊的核心观点是:作为一个发展中国家,中国具有后发优势。这一后发优势来源于中国和发达国家之间的技术差距。中国可以用较低的成本摹仿西方的先进技术,从而避免为技术创新付出昂贵的代价。林毅夫进一步认为,以私人所有权为基础、以自由民主为本质的宪政民主体制,既不是经济发展的充分条件,甚至也不是经济发展的必要条件,同时也不符合中国当前的国情。

落后国家的后发优势正为中国大陆许多经济学家所津津乐道。正是针对这种情况,杨小凯利用前几年在上海经济全球化研讨会和在北京天则经济研究所演讲的机会,特意提醒人们同时也要注意后发劣势,尽管这个观点不太适合很多人的口味。

据了解,后发劣势理论在西方研究的人也不多。这个概念是一位在政治经济学、在财政联邦主义等领域很有建树的、已经过世的马里兰大学经济系沃森(Olson)教授提出来的。

沃森使用的英文字眼是“curse to the late comer”,就是“对后来者的诅咒”。他的意思是,落后国家由于发展比较迟,有很多东西可以模仿发达国家,由于模仿的空间很大,所以可以在没有好的制度的条件下,通过对发达国家技术和管理模式的简单模仿,而取得发达国家必须在一定的制度下才能取得的成就,甚至可以在一个时期里实现快速发展。为什麽说“诅咒”呢?杨小凯指出:

“落后国家模仿技术比较容易,模仿制度比较困难,因为改革制度会触犯一些既得利益,因此落后国家会倾向于技术模仿。落后国家这样做虽然可以在短期内取得非常好的发展,但是会给长期的发展留下许多隐患,甚至长期发展可能失败。”

此时,杨小凯不但是一位经济学家,还俨然是一位历史学家、一位社会政治学家、一位宗教文化学家。

他让人们看到苏联的教训。苏联二十世纪三十年代用专制制度、国有企业和中央计划,通过模仿资本主义成功的工业化模式和技术实现了工业化。今天可以看到,这种短期的成功,同时也使俄国的宪政和法治制度基础设施至今没有稳固建立起来。大半个世纪以来,俄国民众为此付出极高代价。

还有南北美洲发展的对比。南美洲资源很丰富,但一直处于发展中国家的地位,北美洲资源贫乏,却是世界上最发达的地区。原因何在?北美国家实行的是联邦制;而南美国家实行单一制。北美国家地方权力都很大;而南美各国只是把地方看作一个个税源,地方自治性很弱,所以就很难发展起来。另外,北美是新教文化,南美是天主教文化,文化的差异也导致了经济发展的不同。这也涉及到“好的资本主义”和“坏的资本主义”的区分。坏的资本主义除了官商勾结、政治垄断等之外,一个最明显的特点就是收入分配不公。而后发劣势跟坏的资本主义有很大关系。

中国也有许多例子。清朝持续三十来年的洋务运动,想在不改变政治制度的条件下,用国有制(官办)、合资企业(官商合办)、承包制(官督商办),通过模仿技术来实现工业化。八十年代和九十年代的中国,很多乡镇企业也是相当于洋务运动中的官商合办和官督商办。杨小凯感慨地说,这种极落后的制度,在今天却被很多人说成是“制度创新”。从苏联的教训可以看出,这种短期的成功,可能最后又变成“对后来者的诅咒”。

中国后发劣势的具体例子还包括家电行业、电子商务、股市和期货市场,等等。杨小凯回忆,中国五十年代也自认在电子工业中有后发优势,结果超英赶美的豪言壮语成了历史笑话。当年在电子工业方面与中国差不多的日本,反而靠老老实实的学习成了工业大国。日本和中国的比较说明,要获得后发优势,一定要先做个学习成功制度的好学生。

中国到处都有“科教兴国”、“教育兴国”的口号,并为许多国人所称赞所认同。可是,杨小凯从中看到的是后发劣势的表现。他认为,真正要利用后发优势便应该提倡“制度兴国”、“民主宪政兴国”。

显然,在杨小凯看来,“后发”当然可以有优势的,问题是你是否清楚优势在哪里;如果你舍弃最根本的优势,便不可避免地受到“诅咒”,变成后发劣势。

制度!此时此地,这是一个敏感的字眼。什么叫制度?制度是一个国家、一个社会、一个群体的游戏规则,但往往反映了既得利益者的习惯行为方式。制度里面有非理性主义。这是“诅咒”得以发生的原因。

杨小凯知难而进,尽管费力不讨好。


五,一个“持不同政见者”:杨小凯教授的宪政理念

林杨之争看似经济问题实质是政治问题,其背后有着一个宏大历史叙事,并关系到未来中国发展走向。

有学者认为,中国大陆九十年代至今的种种论争,种种问题,如国学和新国学、亚洲现代化(或“亚洲价值”或“新儒学”)、人文精神、现代性、全球化、后现代和后殖民、自由主义和新左派等等,都同知识分子所感知或追求的某种层面上的“国族认同”(national identification)有关。林杨之争也是如此。林毅夫算是洋务派精神的传人。杨小凯的后发劣势观也是危机感的体现,近于康梁,要求进行变法。

学者还认为,林杨之争,不管结论是后发优势还是后发劣势,最后的落脚点都在于中国大陆如何宪政转轨。

杨小凯成名之后,利用接受採访、回大陆讲学的机会,不断表达他关于宪政的严肃的政见。例如,中共十六大允许老板加入中共,一些自由派知识份子也认为这是好事情。但杨小凯指出这恰恰是糟糕的转捩点:官商勾结制度化,利用权来赚钱,再用钱来操纵政治——“这是典型的坏资本主义”。

中国人大代表几乎全在兼职(或者说参政只是副职),而在美国甚至在台湾,类似职位却是严禁兼职的。杨小凯建议人大和政协代表“要有足够的在职收入,不准兼职,才可能使参政议政专业化,水平才能提高”。他表示,中国的制度改革可能要从此做起。杨小凯还指出,中共现在当务之急是必须学会搞选举,从基层开始,再逐级往上发展,这样的直选越早越好。他说,东欧和苏联的共产党之所以丢失政权,是因为他们没有学会选举。直选在中国是迟早要发生的事,学会选举是一切执政党在宪政民主新时代保持继续执政机会必须走的一条路。

关于“依法治国”,杨小凯指出,这和“法治”是有区别的。所谓“法治”是指有一个独立的司法系统,它对违背宪法的立法是可以否定的。“依法治国”的弊端是,政府制订法律可以不受制约。回顾五四运动,中国人要有反省精神。五四讲民主和科学,而在杨小凯看来,最应该讲自由和宪政。

杨小凯,一个经济学家,却十分关心中国的政治改革,成了倡导中国宪政最早也是最力者之一。应该说,这是他生命-学术轨迹所注定的,是其应有之义。中国要改革开放,但如果只进行经济改革而不同时进行政治改革,就不可避免地接收了坏的资本主义,杨小凯作为一个对资本主义了解非常透切的内行人,自然心急如焚发出警告。而作为一个在中共专制独裁制度生活过并惨遭迫害的过来人,杨小凯更深刻认识到,这个专制制度是建立在不断的政治迫害之上的,唯有实行宪政才能结束政治迫害。在一个题为“中国改革面临的焦点问题”的长篇对话中,杨小凯指出:“中国政府总想与美国结盟,但是总是结不了。为什么?因为你是一个专制制度,搞政治迫害、宗教迫害。”他发出警告:


“中国不进行宪制改革,经济强大后会走向二战前德国、日本的道路,打台湾,而与全世界文明社会对抗。”


关于宪政,杨小凯还指出,其实这也是中共当权者真正的自保之路。杨小凯回顾国共之争。他认为:共产党犯的最大的错误就是当年把国民党给消灭了。要是国民党不被消灭,跟共产党平等竞争,是对刘少奇、彭德怀他们的最大保护。有国民党,毛泽东怎么会这样无法无天,他的行为就比较规矩,彭德怀、刘少奇,包括林彪,都不会死得这么惨。

“两个魔鬼胜过一个圣人。”杨小凯的灵感来自这句英国格言。他分析道,民主政体中控制“控制者”的结构基于:既然人都有天生的弱点,找不到十全十美的控制者,那就让几个“一半是天使,一半是野兽”的人平等竞争吧。不过,这实行起来却不易,因为人都有征服的本能,都想打倒对方。怎样才能保证他们和平共处、平等竞争?唯一的办法是依赖历史提供各派平衡、谁也吃不掉谁的局面。他殷切希望中国跳出“革命产生暴君,暴君产生革命”的改朝换代逻辑。

不过,“革命”这个东西很复杂。杨小凯后来亦觉得革命理论也有其合理性。革命对统治者总是一种威胁,没有这种威胁,政府为民众服务的承诺就不可信;有威胁,其行为就不会太离谱。美国宪法明确指出:民众的权利是天赋的,而政府的权利是民众给的。所以美国人普遍认为:你要统治我们,就必须得到我们的同意。要是你搞得不好,民众就可以革你的命。如美国的弹劾制度,就是民众表达革命权利的一种方法。

回顾杨小凯在文革时写的〈中国向何处去?〉,回顾他当年那么简单地、激进地鼓吹极左思潮、革命手段,而现在他赞扬英国的光荣革命,强调权力分立与制衡,强调私有财产制度的巨大政治功能。他倡导自由,提出设立人身保护法案,取消反革命罪,禁止任何政治迫害宗教迫害。他倡导宪政,要求修改宪法,实现政教分离,取消马列主义和什么什么思想作为国教的地位。他对许多复杂的问题给以反复、认真、深刻的思考——这是多么巨大的思想飞跃!

到了生命最后岁月,杨小凯的宪政理想更已发展成为基督教宪政。在他的《人为什么一定要有信仰?》的自述中,他回顾了自己信仰基督教的三个阶段的心理历程。首先,从经济学、社会科学的角度看,他觉得基督教在经济史上起的作用不可等闲视之;然后,他开始克服对社会科学理性的迷信,但尚未能相信永生和神;最后,由社会科学追究到基督教成功的根本,那就是“信”。

杨小凯此时觉得,脱离文化与信仰的土壤,以为仅仅依靠制度转型就能包治百病,是肤浅的。信仰才是制度的第一因。在《自述》中,谈及英、美、澳洲、加拿大的制度根基时,杨小凯说:基督教,特别是基督新教,支持“不断扩张的社会秩序和公正”。杨小凯指出,实现宪政最困难的不单是有权影响政治游戏规则的人能替政治竞争中的失败者着想,而且是竞选失败者能够自愿认输。政治竞争往往是零和对策。竞选失败者自愿认输,从理性而言并非其最优决策。一九一七年俄国和其他很多国家宪政失败都是因为竞选失败者输了不认输,发生革命。而基督教信仰,对竞选失败者放弃个人最优决策,为社会牺牲个人利益,输了认输,能起关键的作用。

杨小凯最终皈依基督,完成了一场艰难的“自我革命”。在他的《自述》中,杨小凯启发性地自问自答:


为什么信基督教的国家都这样长治久安?为什么会有这样的差别?如果你不在灵的基础上想问题,一定要在唯物论的基础上想问题,你永远无法解释这个东西。因为这个差别是跟信仰有关的。

检阅世界发展史,宪政最初无疑是植根于西方基督教的信仰体系之中。但自由立宪政体的生成是否以基督教的广泛传播作为先决条件?这个问题肯定众说纷纭。例如,宪政学者刘军宁就明确不持“基督教救国论”。杨小凯去世前两年,即2002年7月,在上海作题为〈资本主义不等于经济成功〉的演讲时,阐述了他“凡是成功的资本主义地区莫不以基督教为精神支柱”的观点。赞同的人说,这次演讲在一定意义上可以和布什总统在清华大学的演讲相媲美。不过,不论是杨小凯的演讲或是布什的演讲,他们阐述的这个西方思想在汉语文化的神州大地似乎是反应不大,起码眼下的情形是这样,尽管据说现在中国基督徒已有数千万,而且内中有众多的知识分子(2005年,德国之声引述梵蒂冈廣播电台《IDEA》称,在世界上人口最多的国家中国,信奉上帝的教徒数量已经超过了庞大的七千多万的中国共产党党员人数。这个数字包括中国一般所说的基督教新教徒和天主教徒,大部分是没有在官方登记的地下教会的成员)。

中国宪政建设的历史已有一百多年。为什么尚未成功?答案何在???

不管怎样,杨小凯是以他生命的极终体验,得出他这个答案的。


六,逝世突显价值:感悟杨小凯教授的命运和思想

无论从哪种意义来说,杨小凯逝世太早了,太令人惋惜了。

杨小凯在生命的最后日子里还向友人详细描绘他今后的各种雄心勃勃的打算,包括要继续写书,要去世界各地开会,要讲学,要带学生,要将自己的经济学发现向中国向世界广为宣讲……。他旺盛的生命力、对生活的无限热爱,以及对自己的经济学成果的充分信心,使他的友人深深感动。听着这样一个才华横溢、思维活跃、却已患上绝症的人如此滔滔不绝,友人暗暗心酸,只能一再要他量力而行。

真是真是令人无限痛惜和悲怆的英年早逝!杨小凯就这样留下一大堆未竟事业去了。

不过,杨小凯天上有灵,一定也感到相当宽慰。


杨小凯谢世的当天,噩耗便马上传到他梦魂萦绕的祖国,而第二天,也就是7月8日,上午九时三十分,北京大学中国经济研究中心就第一时间举行了悼念活动。“艰辛求索宏图初展曦光何以顿逝?!心系神州壮志未酬鹤驾几时归来?!”——各位教授、学者怀着深深崇敬而又惋惜的心情缅怀了这位传奇人物一生的事迹。

“纪念首位冲击西方主流经济学的中国大陆经济学家杨小凯”,北京大学中国经济研究中心副主任陈平的悼词这样定位。

而中国经济体制改革基金会秘书长、国民经济研究所所长樊纲则说:“杨小凯……一生坎坷,却奋斗不息,多年潜心治学,博大精深,是少数几位对经济学基础理论做出贡献的中国出生的当代经济学家,也是一位一生关注中国命运、为了中国人的福祉而无所畏惧的爱国者。他是我们这一代中国经济学者的骄傲与楷模。”

北京大学中国经济研究中心副主任海闻悼诗云:“平生风云惜师友,岁月蹉跎志弥坚。魂如有灵励相知,智遗千秋鉴世人。”

清华大学李稻葵教授这样表达他对杨小凯的悼念之情:“不屈之魂,求索之灵,一代楷模,永存吾心。”

…………

悼念座谈会由杨小凯学术对手、北京大学中国经济研究中心主任林毅夫教授主持。林毅夫的悼词说:杨小凯以五十五年的岁月走过充满传奇的一生,就时间来讲他的人生不长,就成就来说,他的人生非常丰富。他一生以真挚的心,执著追求自己的学术和理想。道路坎坷,却从来不妥协,不放弃。他的成就已经在国际经济学界闪闪发光,是华人经济学家的骄傲。

林杨认识是在创办留美经济学会之时,前后算来已经将近二十年。他们最近这几年在学术观点上,特别如前面所述在所谓后发优势还是后发劣势问题上,时有冲突。但是,“众士之诺诺,不如一士之谔谔”,林毅夫充分认识到不同观点的不断砥砺和切磋的价值。

杨小凯的价值似乎由于不幸逝世一下子突然呈现在中国大众面前,而尤其显得珍贵。那一段时间,中国大陆的重要报刊对杨小凯的去世和生平成就进行了突出的报导。许多人,特别是年轻一代人,第一次知道了他的名字,并对他传奇的身世和思想发生了浓厚的兴趣。他们感觉到了:在杨小凯学术成就背后,是他对人格独立和思想自由的执着追求,而这和中国大陆某些知名学者形成了强烈对照。

的确,应该让中国大众充分明瞭杨小凯的价值。

应该在中国二百年来的大变局中去感悟杨小凯的命运和思想,并从中看到一个大变革、大转型的时代里中国知识分子的人格历程,和一个古老民族精神信仰的命运。

杨小凯九十年代中出版了一本记录他的难友的非同凡响的书,书名叫《牛鬼蛇神录》。书的最后一页回忆他1978年4月刑满释放走出牢房的心情。他告诉自己:


不管将来发生什么事情,我一定不能让在这片土地上发生的种种动人心魄的故事消失在黑暗中,我要把我亲眼见到的一段黑暗历史告诉世人,因为我的灵魂永远与这些被囚禁的精灵在一起。

二十六年来,杨小凯从中国漂泊到美国,又从美国漂泊到澳大利亚,但他一直心系神州,心系那些被囚禁的精灵。

他仰望星空,不断思索。他以先知般的睿智,始终在探讨他的祖国如何立足于世界之林,始终在探讨中华文化再度复兴的可能性。

当年那个惊天动地的设问——“中国向何处去?”几十年来,仍一直萦绕於他灵魂的每一个角落,而“向何处去”的方向,在他的思索中,也发生了翻天覆地的变化。

有人把杨小凯和邓小平、胡耀邦、赵紫阳联想起来,毕竟这三位具指标意义的改革派领袖也在杨小凯的人生道路上(报考研究生、平反冤狱、出国留学)留下印记。也许杨小凯一生追问“中国向何处去”的问题,也顽强地萦绕于这三位中共领袖的心头?也许他们都有著类似的执著,有着某种理想主义情怀?也许杨小凯在这个社会的底层有更持久的历炼,又有其学养优势,因而这“一介平民”对中国命运的思考更无束缚,更有突破?也许杨小凯与他们在立场、观点、思想方法以至背景、地位差别太大,彼此并无多少可比性?

总之,中国向何处去?答案自然需要千千万万仁人志士不懈的探索和亲身的实践。但就杨小凯个人来说,可以预料,这位经济学大师和中国赤子,一旦进入历史,便会形成他不朽的圣徒地位;他生前种种,他的苦难,他的追寻,他的成就,将会升华为丰富的思想资源和强大的实践动力,将会有助于他的祖国健康发展。这是我们每一个人所热切希望的。

而今天,处于当前中国严酷形势下,面对习近平对内高压对外扩张的精致的高科技的新极权统治,面对他的倒行逆施,开历史倒车,人们发现,杨小凯关于“后发劣势”的理论证实无比正确,当年他的预见与忧虑,不幸言中了,完全成了眼下中国的现实。今天,他二十年前这个先知般的不单关系到中国人还会影响全人类命运的警告,尤其应该在每一个人耳中长鸣:

“中国不进行宪制改革,经济强大后会走向二战前德国、日本的道路,打台湾,而与全世界文明社会对抗。”

(本文写于2004年7月杨小凯教授去世一个星期后。文中有关讨论参考国际经济学界的意见。2022年6月22日稍作修改。)

2022年6月22日后记:

澳华经济学家杨小凯教授于2004年7月7日在墨尔本家中去世。倏忽之间,竟已十八年了。本文写于当年7月杨教授去世一个星期后,现在特发稍作修改的此文,以表纪念。这位大师级的华裔经济学家的短暂的一生,就是世间一个罕见的传奇。

杨小凯教授的生命-学术轨迹注定他非常关心中国的政治改革。他是倡导中国宪政最早也是最力者之一。杨教授生前,曾有一场关于“后发优势”与“后发劣势”的具有经典意义的论争,当年他的预见与忧虑,不幸言中了,完全成了眼下中国的现实。今天,他当年先知般的警告尤其应该在每一个人耳中长鸣:

“中国不进行宪制改革,经济强大后会走向二战前德国、日本的道路,打台湾,而与全世界文明社会对抗。

-----------------------

 

相关帖子:

洋务运动的失败,在于政府利用其垄断地位与私人企业争夺资源并且压制私人企业的发展

如何在外网安全的访问内网

 对于外网访问内网的链路,我们通常称之为内网穿透,之所以是穿透,原因是目前大部分 ISP 并不会主动提供公网 IPV4 地址。虽然在部分地区可以与当地 ISP 沟通来获取,但住址变更、内网完全暴露后的安全问题也较为棘手。本人目前手上的宽带就没有提供公网 IPV4 地址,故需要通过一种穿透途径来打通内外网。(值得一提的是,截至 2021 年,很多 ISP 会主动提供公网固定 IPV6 地址,这也是一个可选方案,但据网友测评,目前国内 IPV6 的链路稳定性较差,所以还是实践才能出真知)。 目前常见的穿透方案大概有两类: - 一类是通过公网服务器与内网设备建立 TCP 长连,用户访问外网服务器时穿透程序会将流量通过之前建立的 socket 代理至目标内网设备上,由于是基于基础的 socket ,故每个转发关系都需要进行一次配置,即可以理解为内网 IP 和端口的排列组合,这种方案以 FRP 、NPS 和 Ngrok 为代表。 - 另一类实际上实现了一种虚拟私用网络方案,外网服务器负责维护网关,用户请求时需要先使用客户端连接到对应网络。这类方案由于应用层的逻辑不同有许多种实现,而我们知道大部分企业也是通过这种方式来打通内外网的,下文提到的 Zerotier 也是这种方案的变种。 那么这两类方案应该如何进行选择呢?我的解决方式是两条腿走路: - 借助 FRP 对常用的内网服务进行代理,这样只要有浏览器即可访问这些服务,不要求设备必须装有客户端,非常灵活。 - 另一方面建立基于 Zerotier 的私有网络,这样就不必为各种不常用的内网服务进行繁琐的 FRP 配置,同时像 SSH 、Windows 远程或 Git 服务等敏感、安全风险大的服务也无需直接暴露于外网之上。

内网穿透的前提条件


我们在内网直接访问各类内网服务的网络延迟是低于 1ms 的,但在公网上的耗时可就是几十毫秒起步了,此外,丢包率、带宽等问题也直接影响内网穿透的使用体验。所以选择一个链路稳定、带宽合适的公网服务器是非常有必要的。 这里提供几个选择方向做参考:

    购买三网优良线路如 GIA 或终端运营商可直连的非大陆 VPS 进行配置,通常网络耗时可控制在 100~200ms ,丢包率很低,由于这类服务商通常是共享 G 口的带宽,所以整体使用体验非常优秀。
    购买国内服务商机器,这种并不是很推荐,首先备案问题就很头疼,不备案的话由于常用端口不可提供 HTTP 服务, FRP 的配置问题重重。而且带宽通常只有 1~2Mbps ,浏览网页倒还好,视频是别想了,性价比很低。
    购买非大陆的高性价比 G 口机器,同时搭配国内的 NAT 中转服务解决网络链路差的问题,在 NAT 服务稳定的场景下使用体验不错。

内网穿透的安全性问题

正如前文所说,内网穿透在为我们带来便捷的同时,也为我们带来了一定的安全风险,失去了 NAT 网络的掩护,暴露在公网的服务将直面各类扫描和攻击,因此我们要采取一定的安全措施进行保护。 由于 Zerotier 本身的安全性目前没有明显问题,且内网服务实际上仍被一层 NAT 转换所保护,故不对此种穿透方式进行额外的安全处理。而 FRP 代理的服务则是直接暴露于公网的,我们可以考虑采取以下措施来进行安全加固: - 尽量不暴露老旧、小厂设备,比如路由器的管理界面等。这类服务维护强度低,很容易出现明显漏洞进而被利用。 - 不直接对外暴露 FRP 服务,而是通过 Nginx 反向代理 FRP 后向外暴露,并借助 Letsencrypt 生成 SSL 证书以使用 HTTPS 协议进行访问,同时应将 80 端口的 HTTP 请求重定向至 443 以强制使用 HTTPS 协议。 - 在 Nginx 配置中加入 robots.txt 的配置,在其中明确禁止搜索引擎抓取,同时禁止常见的各类爬虫 UA 访问。 - 如果一定要暴露老旧服务或敏感服务,那么即使服务本身有登录认证机制,也建议加入一层 Nginx 的 BA 认证机制,配合 HTTPS 可极大地提升服务的安全性。

记一次Ubuntu服务器磁盘清理

查看整个磁盘文件占用情况:


df -h

结果:


Filesystem      Size  Used Avail Use% Mounted on
tmpfs            90M  1.3M   88M   2% /run
/dev/vda3        20G   13G  5.8G  69% /
tmpfs           446M   16K  446M   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/vda2       197M  6.1M  191M   4% /boot/efi
tmpfs            90M  4.0K   90M   1% /run/user/0

根目录占用比较大,查看根目录下哪个目录占用较大,展示详细信息


sudo du -h -d 1 / | sort -hr

结果:


17G     /
3.7G    /root
3.6G    /usr
3.5G    /snap
2.8G    /var
2.3G    /www
160M    /.Recycle_bin
94M     /boot
37M     /opt
7.2M    /etc
1.3M    /run
124K    /tmp
16K     /lost+found
16K     /dev
8.0K    /patch
8.0K    /home
4.0K    /srv
4.0K    /mnt
4.0K    /media
0       /sys
0       /proc

/usr目录占用较大,使用刚才命令继续排查

最终定位 /usr/lib下的 gcc-arm-linux-gnueabi 占用了2G+,是因为之前自己造机械键盘,编译 qmk 固件安装的相关的依赖,后来也不用了,没有卸载,没想到占用这么大。

所以这个问题就变成了:如何在 Ubuntu 上卸载 qmk 和其依赖,问了GPT,卸载命令如下:


sudo apt-get remove --auto-remove gcc-arm-linux-gnueabi

还有avr相关的依赖卸载


sudo apt-get remove avrdude gcc-avr avr-libc
sudo apt-get purge avrdude gcc-avr avr-libc
sudo apt-get autoremove

删除 qmk 源码,因为它加上编译的中间文件占用也比较大:


rm -rf ~/qmk_firmware

另外 /www/ 目录占用也比较大,使用相同方法排查了下,没啥可删除的


1009M   /www/server
148M    /www/wwwroot
105M    /www/backup
30M     /www/wwwlogs
652K    /www/dk_project
4.0K    /www/.Recycle_bin

排查已删除文件

查看已删除文件被占用情况


 lsof | grep deleted

结果:


networkd-     847                              root  txt       REG              252,3   5913032     915811 /usr/bin/python3.10 (deleted)
tuned         870                              root  txt       REG              252,3   5913032     915811 /usr/bin/python3.10 (deleted)
tuned         870    1205 tuned                root  txt       REG              252,3   5913032     915811 /usr/bin/python3.10 (deleted)
tuned         870    1207 tuned                root  txt       REG              252,3   5913032     915811 /usr/bin/python3.10 (deleted)
tuned         870    1229 tuned                root  txt       REG              252,3   5913032     915811 /usr/bin/python3.10 (deleted)
unattende    1062                              root  txt       REG              252,3   5913032     915811 /usr/bin/python3.10 (deleted)
unattende    1062    1182 gmain                root  txt       REG              252,3   5913032     915811 /usr/bin/python3.10 (deleted)

排查大文件

排查大于 1G的文件:


ll -h `find / -type f -size +1000M`

结果, 没啥可清理的:


-r-------- 1 root root 128T Feb  9 06:20 /proc/kcore
-rw-r--r-- 1 root root 1.1G Sep 23 00:45 /www/swap

OK, 清理到此,清理完磁盘占用变成10G,多出8G可用空间,wonderful!

Monday 22 April 2024

PicProse

 

PicProse is a article cover image generator tool for Medium, Wordpress, Wechat and other blog post.

Preview: https://picprose.net or https://picprose.pixpark.net/(China)

User: https://pixpark.net

preview

Getting Started

First: config Unsplash key

💡 create file .env.local, put in your unsplash key

NEXT_PUBLIC_UNSPLASH_API_KEY = your_unsplash_api_key

Refer: https://unsplash.com/documentation

Second: Run the development server:

npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev

Open http://localhost:3000 with your browser to see the result.

You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.

This project uses next/font to automatically optimize and load Inter, a custom Google Font.

Deploy

Run

npm run build

static file generate to out dir

Deploy to Vercel

You can start by creating your own Nextra site and deploying to Vercel by clicking the link:

 from https://github.com/gezhaoyou/picprose

video-subtitle-remover

 基于AI的图片/视频硬字幕去除、文本水印去除,无损分辨率生成去字幕、去水印后的图片/视频文件。无需申请第三方API,本地实现。AI-based tool for removing hard-coded subtitles and text-like watermarks from videos or Pictures.

简体中文 | English

项目简介

License python version support os

Video-subtitle-remover (VSR) 是一款基于AI技术,将视频中的硬字幕去除的软件。 主要实现了以下功能:

  • 无损分辨率将视频中的硬字幕去除,生成去除字幕后的文件
  • 通过超强AI算法模型,对去除字幕文本的区域进行填充(非相邻像素填充与马赛克去除)
  • 支持自定义字幕位置,仅去除定义位置中的字幕(传入位置)
  • 支持全视频自动去除所有文本(不传入位置)
  • 支持多选图片批量去除水印文本

demo.png

使用说明:

  • 有使用问题请加群讨论,QQ群:806152575
  • 直接下载压缩包解压运行,如果不能运行再按照下面的教程,尝试源码安装conda环境运行

下载地址:

Windows GPU版本v1.1.0(GPU):

仅供具有Nvidia显卡的用户使用(AMD的显卡不行)

演示

  • GUI版:

demo2.gif

demo.gif

源码使用说明

无Nvidia显卡请勿使用本项目,最低配置:

GPU:GTX 1060或以上显卡

CPU: 支持AVX指令集

1. 下载安装Miniconda

2. 创建并激活虚机环境

(1)切换到源码所在目录:

cd <源码所在目录>

例如:如果你的源代码放在D盘的tools文件下,并且源代码的文件夹名为video-subtitle-remover,就输入 cd D:/tools/video-subtitle-remover-main

(2)创建激活conda环境

conda create -n videoEnv python=3.8
conda activate videoEnv

3. 安装依赖文件

请确保你已经安装 python 3.8+,使用conda创建项目虚拟环境并激活环境 (建议创建虚拟环境运行,以免后续出现问题)

  • 安装CUDA和cuDNN

    Linux用户
    Windows用户
  • 安装GPU版本Paddlepaddle:

    • windows:

      python -m pip install paddlepaddle-gpu==2.4.2.post117 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html

Linux:

python -m pip install paddlepaddle-gpu==2.4.2.post117 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html

安装GPU版本Pytorch:

conda install pytorch==2.0.1 torchvision==0.16.0 pytorch-cuda=11.8 -c pytorch -c nvidia

或者使用

pip install torch==2.0.1 torchvision==0.16.0 --index-url https://download.pytorch.org/whl/cu118

安装其他依赖:

pip install -r requirements.txt

4. 运行程序

  • 运行图形化界面
python gui.py
  • 运行命令行版本(CLI)
python ./backend/main.py

常见问题

  1. 提取速度慢怎么办

修改backend/config.py中的参数,可以大幅度提高去除速度

MODE = InpaintMode.STTN  # 设置为STTN算法
STTN_SKIP_DETECTION = True # 跳过字幕检测,跳过后可能会导致要去除的字幕遗漏或者误伤不需要去除字幕的视频帧
  1. 视频去除效果不好怎么办

修改backend/config.py中的参数,尝试不同的去除算法,算法介绍

  • InpaintMode.STTN 算法:对于真人视频效果较好,速度快,可以跳过字幕检测
  • InpaintMode.LAMA 算法:对于图片效果最好,对动画类视频效果好,速度一般,不可以跳过字幕检测
  • InpaintMode.PROPAINTER 算法: 需要消耗大量显存,速度较慢,对运动非常剧烈的视频效果较好
  • 使用STTN算法
MODE = InpaintMode.STTN  # 设置为STTN算法
# 相邻帧数, 调大会增加显存占用,效果变好
STTN_NEIGHBOR_STRIDE = 10
# 参考帧长度, 调大会增加显存占用,效果变好
STTN_REFERENCE_LENGTH = 10
# 设置STTN算法最大同时处理的帧数量,设置越大速度越慢,但效果越好
# 要保证STTN_MAX_LOAD_NUM大于STTN_NEIGHBOR_STRIDE和STTN_REFERENCE_LENGTH
STTN_MAX_LOAD_NUM = 30
  • 使用LAMA算法
MODE = InpaintMode.LAMA  # 设置为STTN算法
LAMA_SUPER_FAST = False  # 保证效果

如果对模型去字幕的效果不满意,可以查看design文件夹里面的训练方法,利用backend/tools/train里面的代码进行训练,然后将训练的模型替换旧模型即可

  1. CondaHTTPError

将项目中的.condarc放在用户目录下(C:/Users/<你的用户名>),如果用户目录已经存在该文件则覆盖

解决方案:https://zhuanlan.zhihu.com/p/260034241

  1. 7z文件解压错误

解决方案:升级7-zip解压程序到最新版本

  1. 4090使用cuda 11.7跑不起来

解决方案:改用cuda 11.8

pip install torch==2.1.0 torchvision==0.16.0 --index-url https://download.pytorch.org/whl/cu118
from https://github.com/YaoFANGUK/video-subtitle-remover 

 

本地LLM使用指南

本地LLM使用指南

LLMs,即大型语言模型(Large Language Models),是一种基于人工智能和机器学习技术构建的先进模型,旨在理解和生成自然语言文本。这些模型通过分析和学习海量的文本数据,掌握语言的结构、语法、语义和上下文等复杂特性,从而能够执行各种语言相关的任务。LLM的能力包括但不限于文本生成、问答、文本摘要、翻译、情感分析等。
LLMs例如GPT、LLama、Mistral系列等,通过深度学习的技术架构,如Transformer,使得这些模型能够捕捉到文本之间深层次的关联和含义。模型首先在广泛的数据集上进行预训练,学习语言的一般特征和模式,然后可以针对特定的任务或领域进行微调,以提高其在特定应用中的表现。
预训练阶段让LLMs掌握了大量的语言知识和世界知识,而微调阶段则使模型能够在特定任务上达到更高的性能。这种训练方法赋予了LLMs在处理各种语言任务时的灵活性和适应性,能够为用户提供准确、多样化的信息和服务。
 -------------------------------------------------------------
 

本地LLM使用指南 0.3

1. 背景介绍

1.1 什么是LLMs?

LLMs,即大型语言模型(Large Language Models),是一种基于人工智能和机器学习技术构建的先进模型,旨在理解和生成自然语言文本。这些模型通过分析和学习海量的文本数据,掌握语言的结构、语法、语义和上下文等复杂特性,从而能够执行各种语言相关的任务。LLM的能力包括但不限于文本生成、问答、文本摘要、翻译、情感分析等。

LLMs例如GPT、LLama、Mistral系列等,通过深度学习的技术架构,如Transformer,使得这些模型能够捕捉到文本之间深层次的关联和含义。模型首先在广泛的数据集上进行预训练,学习语言的一般特征和模式,然后可以针对特定的任务或领域进行微调,以提高其在特定应用中的表现。

预训练阶段让LLMs掌握了大量的语言知识和世界知识,而微调阶段则使模型能够在特定任务上达到更高的性能。这种训练方法赋予了LLMs在处理各种语言任务时的灵活性和适应性,能够为用户提供准确、多样化的信息和服务。

1.2 LLMs和应用程序的差异

开放性

LLMs: 通过深度学习的预训练和微调过程,LLMs掌握了从海量互联网文本中获得的广泛知识,使其能够理解和生成包括文本、图片、音频、视频、3D素材在内的多种内容类型。这种能力让LLM在处理各种主题和知识领域时展现出卓越的多样化信息处理能力。

应用程序: 应用程序则是为满足特定需求而设计,如社交互动、新闻获取、电子商务等,其开放性和内容多样性通常不如LLMs。每个应用都围绕其核心功能构建,提供用户界面和体验优化,但用户访问的信息和服务范围受限于应用的设计目的和功能界定。

准确性

LLMs: LLMs通过分析和学习海量文本数据,掌握语言的结构、语义和上下文,具备广泛主题和任务的文本生成能力。然而,这些模型的准确性不仅依赖于丰富多样的训练数据和先进的模型架构,还面临着更新滞后和“幻觉”问题的挑战。在处理专业或最新信息时,LLMs可能产生无事实依据的内容,特别是在缺乏足够上下文或信息迅速变化的情况下。因此,在使用这些模型生成的信息进行决策和分析时,建议进行额外的验证,以提高准确性与可靠性。

应用程序: 应用程序中的信息准确性高度依赖于内容的策划和管理,这通常涉及专业人员或团队的主动选择和提供。例如,在专业领域如医疗健康、金融投资等应用中,开发者和专家会投入大量资源来确保所提供信息的准确性、可靠性和及时更新。这种方法虽然可以提高特定领域内信息的质量,但同时也意味着用户接触到的信息范围受限于这些专业团队的知识广度和选择。因此,虽然应用程序在特定领域内可能提供高度准确的信息,它们的内容覆盖和视角受到了人为选择和专业领域限制的约束。

可预期性

LLMs: LLMs的可预期性较低,因为它们生成的回答可能因训练数据的多样性和模型理解的复杂性而变化。用户可能会在没有明确指示的情况下收到多种可能的答案,或在特定情境下获得意料之外的回应,更差的情况是无法进行下一轮交互。这种不确定性源自于模型的设计和操作机制,尤其是在处理模糊查询或复杂问题时更为明显。

应用程序: 应用程序通常提供更高的可预期性,因为它们是为了满足特定的需求和目的而设计,其功能、操作流程和用户界面都旨在提供一致和可预测的用户体验。应用程序通过明确的用户指令和固定的交互逻辑来减少操作过程中的不确定性,使用户能够预见到自己的操作将产生何种结果。

可用性

LLMs: LLMs当前存在着大量可用性问题,除了上面提到的幻觉问题,还存在且不限于以下问题:

  1. 答非所问: LLMs在处理复杂或模糊的查询时,有时可能会提供与用户期望不符的答案。这种现象通常是由于模型对问题的理解不足或错误解释查询的意图所致。尽管模型训练涵盖了大量数据,以提高对自然语言的理解能力,但在理解特定上下文或领域特定语言时,仍可能遇到困难。
  2. 响应时长: 用户在与LLMs进行交互时,尤其是在进行复杂的生成任务或处理大量数据请求时,可能会遇到较长的响应时间。这不仅影响用户体验,也限制了LLMs在实时交互场景中的应用。响应时间的延长主要由于模型的计算需求高和服务器负载大。
  3. 处理能力的限制: 尽管LLMs的理论能力很强,但在实际应用中,其处理能力受到硬件资源、算法效率和可用性的制约。例如,大规模并发请求可能导致性能下降,特别是在资源受限的环境中。此外,LLMs在处理长篇文本或需要深入理解的复杂任务时,效率和准确性可能会降低。
  4. 自我更新的局限: LLMs通常在固定的数据集上进行预训练,这意味着它们在训练之后的知识是静态的。尽管可以通过周期性的重新训练来更新模型,但是这种方法可能不足以实时捕捉最新信息或趋势,从而在一定程度上限制了模型在快速变化领域(例如新闻、科技等)的应用效果。

应用程序: 由于软件开发和设计领域长期以来的积累与创新,多数应用程序已经达到了高度的用户友好性和稳定性。设计师和开发者能够依托成熟的平台和框架来构建应用,同时,广泛采用的用户体验设计原则确保了应用能够满足用户的需求和期望。此外,通过持续的用户反馈和迭代开发,应用程序能够及时修复Bug,优化性能,从而提高用户满意度和应用的整体可用性。

1.3 开源LLMs有哪些优缺点?

优点

  1. 灵活性和适配性: 开源LLMs提供了不同尺寸的模型,使它们能够部署在各种设备上,从小型设备如树莓派和手机,到个人电脑乃至服务器集群。
  2. 减少依赖: 使用开源LLMs可以在一定程度上减少对特定供应商,如OpenAI的依赖。这不仅提高了技术的可访问性,还促进了创新和自主性。
  3. 隐私保护: 开源LLMs允许用户在本地或私有云环境中部署和使用模型,这有助于减少数据泄露的风险,为处理敏感或私有数据的应用提供了更高的安全性。
  4. 可定制性: 开源模型可以根据特定的需求进行微调,使用户能够优化模型以适应特定的任务或数据集,从而提高了模型的效果和准确性。
  5. 社区支持: 开源LLMs通常受益于活跃的开发者和研究社区的支持。这样的社区不仅提供技术支持和共享解决方案,还促进了新功能、优化和应用场景的快速创新。
  6. 高透明度: 开源模型提供了算法和数据处理流程的可见性,使得技术用户和开发者能够审查模型的工作原理。

缺点

  1. 基础模型和数据集的限制: 开源LLMs的性能上下限很大程度上取决于背后的基础模型和数据集。Meta、Mistral等厂商提供的模型虽然强大,但可能不适合所有类型的任务,特别是那些需要高度专业化知识的领域。
  2. 资源和技术门槛: 尽管开源LLMs提供了极大的灵活性,但部署和维护这些模型需要相当的硬件资源和技术专长。对于缺乏这些资源或技术能力的个人或小团队来说,这可能是一个挑战。
  3. 缺乏统一标准: 开源社区中存在多种LLMs,它们可能采用不同的架构、训练数据集和接口。这种多样性虽然促进了创新,但也给用户选择合适模型和工具带来了复杂性。
  4. 稳定性问题: 本地部署的开源模型可能会遇到硬件限制和软件兼容性问题,导致运行不稳定。这种不稳定性可能会影响到模型的可靠性和用户体验。
  5. 处理速度问题: 如果仅使用CPU进行模型推理,尤其是在处理大型模型或复杂任务时,速度可能非常慢。这不仅延长了处理时间,也可能限制模型在实时或要求高响应速度的应用场景中的使用。
  6. 输出质量波动与内容生成的可控性: 开源LLMs在处理特定语言类型或复杂、边缘案例时,可能会遇到输出质量的波动,有时产生不相关或无意义的回答。同时,当需要生成敏感或要求高度准确的内容时,这些模型可能难以精确控制输出的质量和方向,特别是在缺乏细致的监督和定制化微调的情况下,这可能导致输出内容不达标或不满足特定的期望。

1.4 线上和本地LLMs的区别

这里的LLMs特指Llama、Mistral、GLM等开源模型

可用性

线上LLMs: 线上部署的LLMs提供即时访问和高可用性,这得益于SaaS(软件即服务)提供商在云服务器上预配置好的LLM和RAG(检索增强的生成模型)环境。用户无需担心硬件配置或安装过程,可以立即开始使用这些模型进行文本生成、问答等任务。这种部署方式特别适合没有专业技术背景的用户或需要快速部署解决方案的企业。

本地LLMs: 本地部署的LLMs要求用户具备一定的技术知识,包括安装、配置和优化模型的能力。LLM的推理性能和速度直接受限于个人或组织的硬件配置,如处理器、内存和存储空间等。此外,虽然本地部署为用户提供了更大的控制空间,但缺少像RAG这样的高级功能封装,用户可能需要自己进行额外的开发工作。

成本

线上LLMs: 对个人用户来说,线上LLMs服务的按需计费模式提供了极大的灵活性和入门门槛较低的优势。个人用户可以根据自己的实际需求和使用频率选择合适的服务计划,避免了高昂的初始投资。这对于那些只是偶尔需要使用语言模型进行特定项目或研究的用户尤其有利。然而,如果个人用户频繁使用这些服务进行大量数据处理,成本可能会逐渐累积,特别是当使用高级功能或大规模数据集时。对于那些需要长期、持续使用语言模型服务的个人用户,定期评估总成本是很重要的。

本地LLMs: 对个人用户来说,选择本地部署LLMs意味着需要一次性投资于高性能的计算硬件。尽管这可能增加一些用户的经济成本,但它提供了长期的成本效益,尤其是对于那些有持续高强度使用需求的用户。本地部署避免了重复的服务费用,一旦设备投入使用,除了可能的维护和升级外,额外的运营成本相对较低。此外,个人用户通过本地部署能够获得更大的控制权和自定义能力,这可能对于研究人员或开发者特别有价值。然而,需要注意的是,本地部署也意味着用户必须具备一定的技术能力来配置和维护系统。

隐私性

线上LLMs: 当使用线上LLMs时,用户的数据需要传输到云服务器上进行处理,这引发了对数据隐私和安全的考量。虽然许多SaaS提供商采取了强有力的数据保护措施,并承诺保护用户数据不被滥用或泄露,但这一过程仍然需要用户对提供商的数据处理和隐私政策有一定的信任基础。

本地LLMs: 相对于线上模型,本地部署的LLMs在隐私保护方面提供了更高级别的安全性,主要因为数据处理在用户的私有设备或内部服务器上完成,无需数据外传。这种部署方式让用户对数据的控制权大大增强,降低了数据泄露的风险。

依赖性和控制权

线上LLMs: 使用线上服务,用户依赖服务提供商确保服务的可用性和性能。这种模式简化了使用流程,允许用户专注于模型的应用而非其维护。然而,这也意味着在系统提示、上下文管理及模型响应定制方面,用户的直接控制能力有所限制。尽管线上服务提供一定程度的配置选项,但它们可能不足以满足所有特定需求,特别是在需要高度定制化输出的场景中。

本地LLMs: 本地部署的模型让用户享有更高的控制权,包括对数据处理、模型配置和系统安全的管理。用户可以根据需要深度定制系统提示和上下文处理策略,这在特定应用场景下可能非常重要。然而,这种控制权和灵活性的增加伴随着更高的技术要求和可能的初期设置复杂性。尽管本地部署允许高度定制,但它也要求用户具备相应的技术能力来实现这些定制化的解决方案。

透明度

线上LLMs: 线上LLMs服务由第三方提供,可能会在模型的工作原理和数据处理方式上给某些用户带来透明度的担忧。服务提供商通常会努力提供模型训练、数据处理和隐私政策等方面的文档,旨在提高透明度。然而,由于商业保密和操作复杂性,用户可能无法获得模型内部机制的完全细节。这要求用户信任服务提供商,并依赖其提供的信息和控制措施来保障数据安全和隐私。

本地LLMs: 本地部署的LLMs允许用户直接访问模型,提供了更高程度的透明度。用户可以自行检查、修改和优化模型,从而深入理解其工作原理并根据需求调整其行为。这种直接控制确保了对模型的完全理解和定制能力,特别适合对数据安全、隐私保护有高要求或需遵循特定法规的组织。然而,这也意味着用户需要承担更大的责任,包括维护模型的透明度和确保其符合伦理和法律标准。

离线

线上LLMs: 无法使用

本地LLMs: 可正常使用

1.5 使用线上LLMs存在哪些问题?

在使用线上LLMs时,我们面临着多个层面的挑战,这些问题从个人数据隐私到模型性能与成本,再到内容的完整性以及检索增强的生成模型(RAG)策略的选择和应用,构成了一系列需要用户和服务提供商共同关注的关键问题。

问题1:个人数据隐私

在线上LLMs的使用过程中,个人数据的隐私成为了一个显著的担忧点。用户与LLM的互动,以及上传的文档,都可能被服务提供商收集用于模型的微调和优化。

问题2:模型性能与成本

服务提供商为了平衡成本和性能,可能会使用不同规模的LLM。较小的模型(如7B或13B参数)虽然可以减少计算资源消耗,提高响应速度,但其推理能力可能不足以处理复杂的查询或生成高质量的文本。用户在选择服务时,可能难以获悉所使用的模型规模和性能,导致实际应用中的效果与预期存在差异。这种不透明性可能会影响用户的使用体验和满意度。

问题3:内容完整性

针对长文档的处理,存在一个问题是LLM是否能够完整地获取和理解整个文档内容。由于技术限制,一些服务可能只会处理文档的一部分内容,如仅分析前几百个词。这种处理方式可能会导致LLM遗漏关键信息,从而影响到生成内容的准确性和相关性。用户可能无法了解其提交的内容是否被完整处理,进而对结果的可靠性产生疑问。

问题4:检索增强的生成模型(RAG)策略

RAG的切割方式和回调策略直接影响LLM的效果,特别是在处理需要广泛知识检索的查询时。不同的切割方法和回调策略决定了LLM访问和整合信息的方式,从而影响到最终生成的答案的准确性和完整性。如果这些策略没有恰当选择或优化,LLM可能无法看到或利用相关的信息来生成最佳的回答。用户通常无法控制或知晓这些内部处理细节,这增加了结果不确定性。

2. 哪些理论场景适合使用本地开源LLMs?

此处标注理论场景是因为当前开源LLMs存在较多实际问题,但这些问题将被逐步克服。

1. 我的业务场景是否存在大容量、高频的数据请求?

如果你每天需都需要分析和处理大量文档,而一篇文档大概需要4000Token,LLM一轮输出400 Token,那么10轮交互下来最少需要5W Token,20篇那就消耗了100W Token;如果需要跟之前的文档进行交叉比较和深度分析,假设库里有1000篇文章,那一天需要消耗10亿Token(前提是没有其他技术的加持)。

理论场景: 个人知识库场景、多文档自动分析场景......

2. 我的业务场景是否涉及多重信息加工甚至多任务?

在多任务和多重信息加工领域,涉及到的操作和处理逻辑非常复杂,尤其是在电脑上进行的活动。这些活动不仅仅是简单的执行命令,更多的是涉及到对用户意图的判断、数据之间的传输和交互,以及如何根据当前的上下文来做出响应。这里面涉及到的Token消耗主要是因为这些操作需要大量的计算资源来处理和响应用户的需求。

在这个过程中,每一个步骤所需的系统提示(System Prompt)、上下文对话的逻辑处理等,都需要根据具体情况进行个性化和差异化的设计。这种情况下的“千人千面”,是指系统必须能够根据每个用户的具体需求和上下文来提供定制化的服务。这与基于推荐算法的“千人千面”有着本质的差异。本质上的差异在于:

  1. 处理的动态性与静态性: 多任务和多重信息加工领域的处理是动态的,依赖于当前的上下文和用户的即时需求,而基于推荐算法的处理更多是静态的,依赖于用户的历史数据。
  2. 个性化程度: 虽然两者都追求“千人千面”,但多任务处理更加注重在特定情境下对用户需求的精准响应,推荐算法更多是依据历史数据或者类似用户的数据进行的一般性预测。
  3. 交互性: 多任务处理涉及到与用户的实时交互,而推荐算法则更多是一种单向的内容推送。

请注意,这个本质的差异决定了本地LLMs是解决多重信息加工甚至多任务的唯一解决办法,但它有可能是一个闭源LLM。

理论场景: 撰写报告场景、依赖操作系统能力的交互场景......

3. 我的业务场景是否涉及到个人隐私或敏感数据?

在探讨目标设定、日记撰写、财务管理、情感交流等个人化领域时,我们不得不面对一个现实问题:这些活动往往涉及到大量的个人数据处理,而这些数据中包含了用户的敏感信息。比如,在进行日记撰写时,用户可能会记录下自己的私密想法和感受;在财务管理过程中,用户需要处理自己的收入、支出等财务信息;情感交流时,用户可能会分享自己的心理状态和情绪体验。这些活动中生成和处理的数据,都属于高度敏感的个人信息,一旦被泄露,可能会给用户造成不可挽回的伤害。在这样的背景下,本地开源LLMs的应用就显得尤为重要和必要。

理论场景: 个人目标设定与跟踪场景、私密情感交流场景、日记撰写与情感分析场景......

4. 我的业务场景是否需要低护栏的大模型?

在当前的技术环境中,线上LLM在提供服务的同时,不得不面对各种法律法规和伦理道德的约束。这些约束往往通过增设“护栏”来实施,目的是为了防止模型生成不当内容,如误导信息、侵犯隐私、散播仇恨言论等。然而,这些护栏在一定程度上限制了LLM的功能和知识的完整使用,尤其是在需要较高自由度的应用场景中,如角色扮演、创意写作等。在这些场景下,内容的过滤和限制可能会阻碍创意的发挥和用户体验的深化。

在此背景下,本地部署的LLMs提供了一种解决方案。通过本地部署,用户可以根据自己的需求和责任范围,调整内容过滤的标准,既能规避法律风险,又能保留更高的创意自由度和个性化服务。这种灵活性在某些业务场景中尤为重要,能够为用户提供更加丰富和深入的互动体验。

理论场景: 部分领域的咨询场景、角色扮演场景

3. 开箱即用的本地LLMs

得益于Meta、Mistral和众多开发者提供的开源LLMs,以及Llama.cpp这个开源项目,目前我们可以以很低的成本使用开源LLMs,接下来我推荐一些开箱即用的后端和客户端来帮助各位开启本地LLMs之旅。

本地LLMs推荐及下载

我们推荐使用GGUF版本的量化模型,因为它可以在CPU和消费级GPU环境下单独或者混合使用。欢迎分享自己使用过不错的模型给我们

1. Qwen1.5-32B

介绍: Qwen1.5-32B是阿里云研发的通义千问大模型系列的320亿参数规模的模型。我们推荐使用Q2及以上量化模型。

官网: https://github.com/QwenLM/Qwen1.5

模型大小: 32B

相关语言: 英文、中文

上下文长度: 32k

适用于: 拥有24GB显存及以上的英伟达显卡电脑、拥有32GB内存及以上的M1/M2/M3 Mac

下载地址:

https://huggingface.co/Qwen/Qwen1.5-32B-Chat-GGUF

https://modelscope.cn/models/qwen/Qwen1.5-32B-Chat-GGUF/summary

2. Qwen1.5-14B

介绍: Qwen1.5-14B是阿里云研发的通义千问大模型系列的140亿参数规模的模型。我们推荐使用Q2及以上量化模型。

官网: https://github.com/QwenLM/Qwen1.5

模型大小: 14B

相关语言: 英文、中文

上下文长度: 32k

适用于: 拥有12GB显存及以上的英伟达显卡电脑、拥有16GB内存及以上的M1/M2/M3 Mac

下载地址:

https://huggingface.co/Qwen/Qwen1.5-14B-Chat-GGUF

https://modelscope.cn/models/qwen/Qwen1.5-14B-Chat-GGUF/summary

3. Qwen1.5-7B

介绍: Qwen1.5-7B是阿里云研发的通义千问大模型系列的70亿参数规模的模型。我们推荐使用Q2及以上量化模型。

官网: https://github.com/QwenLM/Qwen1.5

模型大小: 7B

相关语言: 英文、中文

上下文长度: 32K

适用于: 适用于大部分电脑,但建议拥有12GB显存及以上的英伟达显卡电脑、拥有16GB内存及以上的M1/M2/M3 Mac

下载地址:

https://huggingface.co/Qwen/Qwen1.5-7B-Chat-GGUF

https://modelscope.cn/models/qwen/Qwen1.5-7B-Chat-GGUF/summary

4. Mixtral-8x7B-Instruct-v0.1

介绍: Mixtral 8x7B是一个具有开放权重的专家模型 (MoE) 混合。我们推荐使用Q3及以上的量化模型。

官网: https://mistral.ai/

模型大小: 8x7B

相关语言: 多语言

上下文长度: 32K

适用于: 拥有24GB显存及以上的英伟达显卡电脑、拥有32GB内存及以上的M1/M2/M3 Mac

下载地址:

https://huggingface.co/TheBloke/Mixtral-8x7B-Instruct-v0.1-GGUF/tree/main

https://modelscope.cn/models/limoncc/Mixtral-8x7B-Instruct-v0.1-GGUF/files

5. OpenChat 3.5 0106

介绍: OpenChat在24年1月份的版本,通过 C-RLFT 在Mistral 7B的基础上进行微调,在推理和中英文双语问答上有较好的表现。我们推荐使用Q4及以上量化模型。

官网: https://github.com/imoneoi/openchat

模型大小: 7B

相关语言: 中文、英文

上下文长度: 8K

适用于: 适用于大部分电脑,但建议拥有12GB显存及以上的英伟达显卡电脑、拥有16GB内存及以上的M1/M2/M3 Mac

下载地址:

https://huggingface.co/TheBloke/openchat-3.5-0106-GGUF

https://modelscope.cn/models/fivetwin/openchat-3.5-0106-GGUF/files

6. OpenChat 3.5-16k

介绍: OpenChat在23年12月份的版本,通过 C-RLFT 在Mistral 7B的基础上进行微调,在推理和中英文双语问答上有较好的表现。我们推荐使用Q4及以上量化模型。

官网: https://github.com/imoneoi/openchat

模型大小: 7B

相关语言: 中文、英文

上下文长度: 16K

适用于: 适用于大部分电脑,但建议拥有12GB显存及以上的英伟达显卡电脑、拥有16GB内存及以上的M1/M2/M3 Mac

下载地址:

https://huggingface.co/TheBloke/openchat_3.5-16k-GGUF/tree/main

https://modelscope.cn/models/limoncc/OPENCHAT3.5-16K-GGUF/files

7. llava 1.6

介绍: LLaVA 是用于聊天机器人的多模态模型,拥有计算机视觉和自然处理能力,可以分析图片并用文字进行反馈。

模型大小: 7B

相关语言: 英文

上下文长度: 32K

适用于: 适用于大部分电脑,但建议拥有12GB显存及以上的英伟达显卡电脑、拥有16GB内存及以上的M1/M2/M3 Mac

注意事项: 下载文件时除了量化模型,还要下载配置文件以及对应的mmproj模型,这些文件夹需要放在同一个文件夹内。

下载地址:

https://huggingface.co/cmp-nct/llava-1.6-gguf/

https://modelscope.cn/models/mirror013/llava-1.6-mistral-7b-gguf/summary

8. Gemma-7b-it

介绍: Gemma 是 Google 推出的一系列轻量级、最先进的开放模型,采用与创建 Gemini 模型相同的研究和技术构建。它们是文本到文本、仅限解码器的大型语言模型,提供英语版本,具有开放权重、预训练变体和指令调整变体。

官网: https://huggingface.co/google/gemma-7b-it

模型大小: 7B

相关语言: 多语言

上下文长度: 8K

适用于: 适用于大部分电脑,但建议拥有12GB显存及以上的英伟达显卡电脑、拥有16GB内存及以上的M1/M2/M3 Mac

注意事项: 在llama.cpp上使用Q8以下的量化模型会有Bug。

下载地址:

https://huggingface.co/sayhan/gemma-7b-it-GGUF-quantized

https://modelscope.cn/models/fivetwin/gemma-7b-it-gguf/summary

9. Gemma-2b-it

介绍: Gemma 是 Google 推出的一系列轻量级、最先进的开放模型,采用与创建 Gemini 模型相同的研究和技术构建。它们是文本到文本、仅限解码器的大型语言模型,提供英语版本,具有开放权重、预训练变体和指令调整变体。

官网: https://huggingface.co/google/gemma-2b-it

模型大小: 2B

相关语言: 多语言

上下文长度: 8K

适用于: 适用于大部分电脑

注意事项: 在llama.cpp上使用Q8以下的量化模型会有Bug。

下载地址:

https://huggingface.co/lmstudio-ai/gemma-2b-it-GGUF

https://modelscope.cn/models/CruiseTian/gemma-2b-gguf-quantized/summary

如何开启本地LLM

1. LM Studio

1.png

介绍:LM Studio基于LLama.cpp开发了一套友好的用户界面,支持在Windows、Mac和Linux系统上安装和使用,提供了多种语言模型,并且提供了模型搜索、下载和聊天等功能。

官网及下载地址https://lmstudio.ai/

操作系统: Windows、Mac、Linux

相关语言: 英文

使用步骤:

  1. 下载并安装软件。
  2. 在应用内下载模型,如果因网络等情况无法下载,可以选择存放LLM的文件夹后并在文件夹里新建一个名为“TheBloke”的文件夹,然后将下载过的模型放进“TheBloke”文件夹里。 2.png
  3. 点击”Select a model to load“选择模型即可开启对话模式,也可以根据自己电脑和模型选择对应的“GPU Acceleration”和“Context Length”,重新加载模型。(如果自己的电脑配置一般,建议不勾选”GPU Offload“,以及“Context Length”设置越大,等待时间会越长,更详细的介绍请看指南第四部分) 3.png
  4. 如果开启服务端模式,加载模型并填写端口(例如8000),点击“Start Server”即可运行。记住,客户端和服务端的通讯必须兼容OpenAI API模式。 4.png

优点:

  1. 整体使用流程对普通用户友好。
  2. 可以很方便地切换模型。
  3. 可以很方便地选择CPU和GPU的混合程度。
  4. 可以很方便地切换Preset。
  5. 兼容多模态模型,可以在界面里直接查询图片。

注意事项:

  1. 切换模型或者设置参数后一定要记得重新手动加载模型。
  2. 服务端模式下,重新更换模型或者设置参数后,有可能需要重启服务端。
  3. 暂时不支持开机启动。
  4. 暂时不支持自动进入服务端模式。
  5. 如果你的系统是Windows/Linux,处理器需要支持AVX2。

2. llamafile

5.png

介绍:llamafile将 llama.cpp 与 Cosmopolitan Libc 组合成一个框架,将 LLMs 的所有复杂性压缩为在大多数计算机上本地运行的单个文件可执行文件。

官网: https://github.com/Mozilla-Ocho/llamafile

下载地址: https://github.com/Mozilla-Ocho/llamafile/releases/

操作系统: Windows、Mac、Linux

相关语言: 英文

使用步骤:

  1. 下载文件
  2. 如果你是macOS或者Linux用户,打开计算机终端,授予计算机执行此新文件的权限chmod +x llava-v1.5-7b-q4.llamafile,接着运行该llama文件./llava-v1.5-7b-q4.llamafile -ngl 9999。(记住先进入对应的文件夹再输入指令,“llava-v1.5-7b-q4.llamafile”是你下载的文件名字)
  3. 如果你是Windows用户,可以在文件末尾添加“.exe”来重命名该文件。
  4. 你的浏览器应该自动打开并显示聊天界面。 (如果没有,只需打开浏览器并将其指向 http://127.0.0.1:8080/
  5. 聊天完毕后,返回终端并点击 Control-C 关闭 llamafile,或者直接关闭cmd窗口。
  6. 另外,开启llamafile后会自动开启服务端模式,在客户端填写 http://127.0.0.1:8080/ 即可通讯。记住,客户端和服务端的通讯必须兼容OpenAI API模式。

优点:

  1. 下载文件后即可直接使用。
  2. 开启应用后直接进入服务端模式。
  3. 可以通过命令行方式设置的方式开机启动应用和服务端模式。
  4. 兼容多模态模型,可以在界面里直接查询图片。

注意事项:

  1. 目前llamafile的一部分功能依赖于CLI(Command Line Interface),更适合拥有编程能力的用户使用。
  2. 由于Windows对可执行文件大小有4GB的限制,所以大部分从网上下载的llamafiles无法使用,需要自己重新打包和设置llamafile,详情请看: https://github.com/Mozilla-Ocho/llamafile
  3. 导入本地已经下载好的模型,需要重新打包另外一个llamafile。
  4. 使用过程中更换模型约等于打开另外一个文件,操作起来不怎么方便。
  5. 如果你的系统是Windows/Linux,处理器需要支持AVX2。

3. GPT4All

20.png 介绍:一个免费使用、本地运行、具有隐私意识的聊天机器人,无需 GPU 或互联网。

官网及下载地址https://gpt4all.io/

操作系统: Windows、Mac、Linux

相关语言: 英文

使用步骤:

  1. 下载并安装软件。
  2. 选择模型存放路径。
  3. 下载LLMs和RAG模型(如果模型存放路径里有模型,可以直接使用)。
  4. 在应用顶部选择模型后即可对话。
  5. 如果需要开启Server模式,点击一下Wifi图标即可,但无法查看和修改端口。Server模式下端口是4891,完整URL:http://127.0.0.1:4891。

优点:

  1. 支持RAG功能。
  2. 可以选择CPU和GPU的混合程度。

注意事项:

  1. 在应用内无法查看和修改Server模式下的端口(4891)。
  2. GPT4All有可能没有兼容完整的OpenAI API模式,部分客户端接收不到数据。
  3. 暂时不支持开机启动。
  4. 暂时不支持自动进入服务端模式。
  5. 暂时不支持自动选择RAG的本地文件夹。
  6. 如果你的系统是Windows/Linux,处理器需要支持AVX2。
  7. 用户体验上有待提高。

4. Ollama

介绍:Ollama 是一个基于LLama.cpp的轻量级、可扩展的框架,用于在本地构建和运行语言模型。

官网及下载地址https://ollama.com/

操作系统: Windows、Mac、Linux

相关语言: 英文

使用步骤:

  1. 下载并打开执行文件。
  2. 成功安装后会提示在cmd内运行模型,例如ollama run mistral(如果没有下载过模型会自动下载模型)。 6.png 7.png
  3. 在cmd中开始对话

优点:

  1. 支持开机启动。
  2. 开启应用后直接进入服务端模式。
  3. 可以通过命令行直接下载模型。
  4. 可以通过命令行直接切换模型。

注意事项:

  1. 目前Ollama依赖于CLI(Command Line Interface),更适合拥有编程能力的用户使用。
  2. 导入本地已经下载好的模型需要命令行导入,详情请看: https://github.com/ollama/ollama
  3. 服务端模式跟OpenAI API不一样,需要客户端兼容并选择对应的模型。
  4. 如果你的系统是Windows/Linux,处理器需要支持AVX2。

欢迎分享自己使用过不错的LLM后端给我们

可连接本地LLM的应用推荐

1. MiX Copilot

8.png

介绍:MiX Copilot 是一款支持OpenAI和本地LLMs的PC客户端,用于自动爬取、整理和分析资料(数据都以Markdown的形式保存到本地,避免隐私泄露),支持多个Chatbot同时对话、浏览网页+使用LLMs、制作LLM工作流(包括定制Prompt、查询网页)等功能。

官网及下载地址https://www.mix-copilot.com/

操作系统: Windows、Mac

相关语言: 中文、英文

使用教程: https://hci-top.notion.site/MiX-Copilot-Tutorial-English-2c95481c5d4c4c818f40bd04c299b7ea

使用步骤:

  1. 下载并安装软件
  2. 进入“设置-LLM设置”,在本地模型设置项填写服务端链接(记住端口号要一致),例如 http://127.0.0.1:8000 ,点击顶部的”更新“按钮,如果红色Tag变成绿色,说明和LLM服务端连接成功。 9.png
  3. 在顶部Tab点击“+”号,或者在浏览网页时右键点击“展示Chatbot”开启Chatbot。 10.png
  4. 在对话面板左下角选择本地LLM! 11.png

2. AnythingLLM for Desktop

15.png 介绍:AnythingLLM 可用于无限文档,完全私密,可以使用GPT-4,自定义模型或开源模型如 Llama、Mistral 等,支持 PDF、Word 文档等多种格式。

官网及下载地址https://useanything.com/

操作系统: Windows、Mac

相关语言: 英文

使用步骤:

  1. 下载并安装软件。
  2. 分别设置模型(可以设置OpenAI API、连接LM-Studio等)、Embedding、向量数据库 117.png18.png19.png
  3. 设置工作区。
  4. 开始对话。
  5. 可以在客户端内添加MD、PDF、MP4等文件,或者直接添加网站URL。
  6. 将以上文档添加到工作区开始Embedding并进行对话。 16.png

3. Reor

13.jpg 介绍:Reor 是一款由人工智能驱动的桌面笔记应用程序:它会自动链接相关想法、回答笔记中的问题并提供语义搜索。所有内容都存储在本地,用户可以使用类似黑曜石的 Markdown 编辑器来编辑笔记。

官网及下载地址https://www.reorproject.org/

操作系统: Windows、Mac

相关语言: 英文

使用步骤:

  1. 下载并安装软件。
  2. 选择你存放Markdown的文件夹。
  3. 在设置页选择你下载好的量化模型(GGUF格式)以及设置上下文长度。 14.png
  4. 选择你需要的Embedding模型。注意: 一部分地区用户可能因为网络问题无法下载Embedding模型,导致应用无法使用。另外,应用中提供的Embedding模型只擅长处理英文,其他语言不一定适用。
  5. 设置RAG的返回数量。

4. Chat with RTX

img.png 介绍:Chat With RTX 是一款演示应用程序,可以将自己的内容(文档、笔记、视频或其他数据)与本地LLM进行交互。Chat With RTX集成了检索增强生成 (RAG)、TensorRT-LLM 和 RTX 加速,用户可以查询自定义聊天机器人以快速获得上下文相关的答案。Chat with RTX 支持各种文件格式,包括文本、pdf、doc/docx 和 xml。只需将应用程序指向包含文件的文件夹,它就会在几秒钟内将它们加载到库中。此外,用户可以提供 YouTube 播放列表的网址,应用程序将加载播放列表中视频的转录,然后查询它们涵盖的内容。

官网及下载地址https://www.nvidia.com/en-us/ai-on-rtx/chat-with-rtx-generative-ai/

操作系统: Windows

相关语言: 英文

注意事项:

  1. 目前Chat with RTX是一个演示应用程序。
  2. 目前Chat with RTX要求NVIDIA GeForce™ RTX 30 或 40 系列 GPU 或 NVIDIA RTX™ Ampere 或 Ada Generation GPU,具有至少 8GB VRAM 和 16GB RAM。
  3. 演示应用程序安装包体积高达35GB。

5. 待补充

目前全球范围内可以兼容本地LLM的客户端极少,欢迎各位推荐或自荐

4. 使用本地LLMs需要注意什么?

1. 首先你需要知道以下几点:

  1. 不同训练规模的LLM都会出错,即使是GPT-5。
  2. 不同训练规模的LLM决定了它的自身推理水平,例如13B优于2B的LLM模型,但是可以通过微调来提升小模型完成任务的质量。
  3. LLM模型被量化后,体积越小,精度也会越差,例如Q2 < Q8。
  4. 目前运行LLM的最佳设备是英伟达GPU或者M1及以上的Mac,如果你的电脑是AMD或者Intel的GPU,目前只能用CPU来运行LLM。
  5. LLM模型全部加载到GPU并运行是最快的。

2. 如何让LLM高效运行?

  1. 8G及以下的GPU:2B-LLM + 4-8k Token或者7B-LLM + 2-4k Token。
  2. 8-12GB的GPU:7B-LLM + 4k-6k Token或者14B-LLM + 2-4k Token。
  3. 12-24GB的GPU-:7B-LLM + 8-12k Token或者14B-LLM + 4-8k Token。

注意:最终LLM模型体积 + 上下文占用的显存 < GPU显存,否则速度会变慢(例如8k上下文会占用到6~10G的显存),你可以根据自己需求适当选择不同量化模型来减少LLM模型的体积。

3. 模型中的Q、S、K和数组分别代表什么?

4. 当前LLM经常出现的问题有哪些?

5. 目前LLM能做什么?

6. 如何本地使用RAG?

7. 目前本地RAG是否可用?

5. 常见专业术语

System Prompt

解释: 在大型语言模型(LLM)的上下文中,系统提示是指模型给出的初始文本或指令,用于引导或初始化模型的行为。这个提示通常包含了让模型执行特定任务所需的信息或背景。例如,在一个聊天机器人应用中,系统提示可能是一系列固定的问题或指令,用于激活模型开始一个对话流程。

注意事项: 虽然最终用户通常不直接设置系统提示,但了解它的概念有助于理解与语言模型交互的起点。对于开发者而言,在设计交互式应用或任务时精心设计系统提示,可以大幅提高模型执行任务的效率和准确性。

User Prompt

解释: User Prompt是用户输入的文本,旨在引导或请求语言模型进行特定的响应或操作。比如,用户可能会回答系统的问题或直接提出自己的问题。

注意事项: 用户在提供提示时应尽量明确具体,以便语言模型能更准确地理解意图并给出相关的回答。

助理(Assistant)

解释: 在LLM的上下文中,“助理”通常指的是构建在大型语言模型基础上的应用程序或服务,它能够理解用户的查询或指令,并生成人类可读的自然语言回应。这种助理能够执行包括回答问题、提供建议、执行特定任务等多种功能。简而言之,助理是一种应用语言模型技术来实现人机交互的工具或服务。

注意事项: 用户在与基于LLM的助理交互时,不需要关心后端的复杂配置,但理解助理的工作原理有助于更有效地与之交互。例如,明确、具体的指令或查询可以帮助助理更准确地理解意图并提供相关的回答或服务。用户也应当了解,虽然助理能提供帮助和信息,但它们的回答可能受限于训练数据和当前技术的局限性。

令牌(Token)

解释: 令牌(Token)是语言模型处理文本时的基本单位,可以是一个词、一个字符或者文本的一部分。语言模型根据令牌来理解和生成文本。

用户设置注意事项: 用户通常不直接与令牌交互,但应该知道,文本的长度和复杂度可能受到模型处理能力(即令牌限制)的影响。

上下文长度(Context Length)

解释: 上下文长度是指语言模型在生成响应时能够考虑的最大文本长度(以令牌为单位)。超过这个长度的文本将被忽略。

注意事项: 在与语言模型交互时,用户应尽量精简自己的输入,避免超出模型的上下文长度限制,以确保重要信息能被模型考虑。

温度(Temperature)

解释: 温度是一个控制语言模型生成文本多样性的参数。温度值越高,生成的文本越随机和多样;温度值越低,文本越倾向于常见或预测性强的表达。

注意事项: 用户可以根据需要调整温度值以获取更创造性或更精确的回答。但要注意,过高的温度可能导致回答偏离主题或不相关。

Top K

解释: Top K 是一种文本生成策略,它限制语言模型在每一步生成时只从概率最高的 K 个选项中选择下一个词。

注意事项: 调整 Top K 的值可以影响回答的多样性和准确性。较小的 K 值可能使得生成的文本过于常规,而较大的 K 值可能增加文本的多样性但降低准确性。

Top P

解释: Top P(又称作核采样)是一种文本生成策略,它选择累积概率超过 P 的最小词集,然后从这个集合中随机选择下一个词。

注意事项: 调整 Top P 的值可以平衡回答的创新性和相关性。与 Top K 类似,选择合适的 P 值对于生成质量和多样性之间的平衡非常重要。

Min P

解释: Min P 是在使用 Top P 采样策略时,设置的一个阈值,用来过滤掉概率低于某个特定值 P 的词,以减少生成低概率词的机会。

注意事项: 设置 Min P 值可以帮助减少生成不相关或无意义内容的风险。通过调整该值,用户可以控制语言模型输出的质量和一致性。

重复罚分(Repeat Penalty)

解释: 重复罚分是一个避免语言模型重复同一词汇或短语的机制。当检测到重复生成时,会对这些词汇或短语的生成概率进行惩罚,降低它们再次被选中的机率。

注意事项: 通过调整重复罚分的大小,用户可以控制生成文本的多样性和新颖性。适当的罚分有助于提高文本的可读性和信息丰富度。

最后,如果你对本地LLM非常熟悉,欢迎加入我们的讨论!

Github:https://github.com/xue160709/Local-LLM-User-Guideline

Discord:https://discord.gg/4AQuf2ctav

Twitter:https://twitter.com/XueZhirong

from https://github.com/xue160709/Local-LLM-User-Guideline/blob/main/README-zh.md 

-----------------------------

https://github.com/LLM-Testing/LLM4SoftwareTesting

https://github.com/onejune2018/Awesome-LLM-Eval