Convert GGUF

下载 llama.cpp 项目,需要用到其 Python 部分


git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp

llama.cpp 下创建虚拟环境及安装依赖

本来想用 uv init 创建虚拟环境,但是本地已经有 pyproject.toml 文件了。venv python 自带的。

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

# 查看是否使用的 .venv 目录下的 python, pip
which python
which pip

确保安装无报错。我因为安装不完整,执行 convert 脚本报错了,一度以为 llama.cpp 还不支持 Qwen,很惊讶。

FileNotFoundError: File not found: Qwen3-0.6B/tokenizer.model

下载模型到本地

前序工作,lfs 需要额外安装。以下是 ubuntu 下的指令。一次性工作。

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install

huggingface 上下载模型。

rdb command

一些 Redis 内存分析、清理脚本

Redis 内存了近 32GB 的计数。

使用 redis-cli 删除符合前缀匹配的所有 key。

export REDISCLI_AUTH=""
export REDIS_HOST="localhost"
# SCAN 是一个非阻塞的迭代命令,可以逐步获取匹配的键,适用于大型数据库。它使用游标来分批返回结果,不要使用 KEYS
redis-cli -h $REDIS_HOST --scan --pattern "f1:i00004*" | xargs -I {} -t redis-cli -h $REDIS_HOST del {}

二次开发了 rdb。可以基于 rdb 进行分析和操作。

# 下载、解压到本地 https://github.com/XUJiahua/rdb/releases
wget https://github.com/XUJiahua/rdb/releases/download/v0.2.1/rdb_0.2.1_linux_amd64.tar.gz
tar -xzvf rdb_0.2.1_linux_amd64.tar.gz

# 下载 redis 备份 dump.rdb
# 阿里云控制台提供了内网下载地址
wget -O dump.rdb "http://rdsbak-hk-v3-3az.oss-cn-hongkong-internal.aliyuncs.com/custins62059427/hins33306587_data_20250611150501.rdb" 

# 分析内存占用
# prefixv2 原版 prefix 命令会爆内存
# -max-depth 10 按前10个字符分组统计内存占用
# -n 200 top 200
./rdb -c prefixv2 -n 200 -max-depth 10 dump.rdb

# 因为设计失误,时间字段在整个 key 的最后
# 从 dump.rdb 中使用正则过滤,然后根据日期进一步过滤,默认是打印每个 key,打印到标准输出,可以通过管道与其他命令组合使用
# 20250401 之前的数据,比较的是 key 的最后一个字段
# 正则先使用工具测试 https://regex101.com/
./rdb -c filter -filter-date '20250401' -regex 'f1:i00066:.*' dump.rdb
f1:100066:xxxxxx:2025030505

# 对过滤内容进行聚合,key 数量,key 占用空间,对要清理多少空间有数
./rdb -c filter -filter-date '20250401' -regex 'f1:i00066:.*' -action sum dump.rdb
key count: 4802086,* 4802086, total size: 940581576(897M)

# 对过滤内容进行删除,使用内置 redis client 删除
export REDIS_ADDR="localhost:6379"
export REDIS_PASSWORD=""
export REDIS_DB="0"
./rdb -c filter -filter-date '20250401' -regex 'f1:i00136:.*' -action del dump.rdb

k8s 内操作

企业支付宝申请小结

  1. 网站需要支持支付宝支付,选择手机网站支付场景。

  2. 已经在支付宝 sandbox 环境下进行开发测试。个人帐号即可使用 sandbox 环境。

  3. 如果使用 Golang 开发,选择 https://github.com/smartwalle/alipay/tree/master/examples 这个库最快,连例子都准备好了。

申请需要的参数即可上线,以下是申请时间线,很费时间,耐心等待:

  1. 创建企业支付宝帐号(上传营业执照)
  2. 申请参数失败,帐号进入限制状态,原因:网站没有 ICP 备案
  3. 购买境内服务器,网站不需要部署
  4. 申请 ICP 备案:需要等待 10 天。
    1. 公安备案:对支付宝来说不要求。最好在 30 天内完成。这里走了弯路,一直在等公安备案(到现在为止 20250610,公安备案还没通过)
    2. 经营性备案 ICP 许可证:卖自己产品不需要申请
  5. 支付宝解除限制提交材料
  6. 提交的最后一个视频材料不通过,需要重新上传。忙,没管
  7. 限制解除,1 个月限制期过了,自动解除?
  8. 开通手机网站支付场景,提交审核,第二天通过
  9. 创建应用,得到生产参数,提交审核,第二天通过

SQL Studio

SQL Studio 是一个比较轻量的数据库管理工具,支持主流的数据库,比如 MySQL、PostgreSQL、SQLite 等。

命令行启动 server,通过浏览器访问:

  1. 数据库的统计信息

  2. 表的统计信息:显示表结构和数据

  3. 写 SQL

示例

sql-studio mysql mysql://root:root@localhost:3306/dbname
sql-studio sqlite sqlite.db

个人评价

  1. 这个工具特别适合快速打开一个 SQLite 数据库。正常的数据库管理工具,通过向导导入 SQLite 文件,使用这个工具避免这个繁琐流程。
  2. 通过暴露端口的方式可快速访问内网数据库。
  3. 如果是连接固定的数据库,这个工具相对于传统数据库管理工具来说,显得鸡肋。

K8s 认证授权流程及 EKS 用户管理

编辑于2020年12月,Google Docs 导入。

目前使用 Rancher 管理集群及结合 LDAP 用户管理。支持多云的场景。

本文只做知识记录。

Kubernetes Authentication & Authorization

Kubernetes 背景知识

../../images/image2-372a0c63-083e-4dc5-bc10-7160ff72595a.png

整体架构,来源:Components of Kubernetes Architecture | by Gaurav Gupta

比较典型的 Master-Slave 架构。而 apiserver 是核心中的核心。

../../images/image7-75649d28-a26a-491c-8162-939f91a7a311.png

apiserver 架构,来源:???

单单 apiserver 本身,可以理解为一个后端连接 etcd 作为数据库的,仅仅执行 CRUD 操作的 API 服务。CRUD 的对象,就是我们说的 API Resource,比如 Pod, Service 等内置资源,还有开发者自定义的资源。

具体的工作由各种 controllers (包括 kubelet )来执行。这些 controllers 通过 watch apiserver,其本质是 etcd 的 watch 功能,能及时获得新的指令。

eksctl: NodeCreationFailure: Instances failed to join the kubernetes cluster

eksctl 创建集群失败了。第一次遇到这个错。

2021-04-25 01:59:24 [ℹ]  waiting for CloudFormation stack "eksctl-eks-prod-evocloud-tyo-nodegroup-mng-1"
2021-04-25 01:59:25 [✖]  unexpected status "ROLLBACK_IN_PROGRESS" while waiting for CloudFormation stack "eksctl-eks-prod-evocloud-tyo-nodegroup-mng-1"
2021-04-25 01:59:25 [ℹ]  fetching stack events in attempt to troubleshoot the root cause of the failure
2021-04-25 01:59:25 [✖]  AWS::EKS::Nodegroup/ManagedNodeGroup: CREATE_FAILED – "Nodegroup mng-1 failed to stabilize: [{Code: NodeCreationFailure,Message: Instances failed to join the kubernetes cluster,ResourceIds: [i-09df0fc7408f36801]}]"
2021-04-25 01:59:25 [!]  1 error(s) occurred and cluster hasn't been created properly, you may wish to check CloudFormation console

分析

在 CloudFormation 控制台查看详细日志。无法加入到 K8s 集群。然后没有进一步的信息了。