四种基本的编程命名规范
匈牙利命令法 匈牙利命名法是早期的规范,由微软的一个匈牙利人发明的,是 IDE 还十分智障的年代的产物。那个年代,当代码量很多的时候,想要确定一个变量的类型是很麻烦的,不像现在 IDE 都会给提示,所以才产生了这样一个命名规范,估计现在已经没啥人用了吧……一个十分系统却又琐碎的命名规范。
该命名规范,要求前缀字母用变量类型的缩写,其余部分用变量的英文或英文的缩写,单词第一个字母大写。
int iMyAge; # "i": intchar cMyName[10]; # "c": charfloat fManHeight; # "f": float
前缀类型还有:
a 数组(Array)b 布尔值(Boolean)by 字节(Byte)c 有符号字符(Char)cb 无符号字符(Char Byte,并没有神马人用的)cr 颜色参考值(Color Ref)cx,cy 坐标差(长度 Short Int)dw 双字(Double W ...
GGUF文件
GGUF格式 GGUF是一种大模型文件格式,由开发者Georgi Gerganov提出。
具体来说,GGUF代表的是GPT-Generated Unified Format,这是一种针对大规模机器学习模型设计的二进制格式文件规范。它的主要优势在于能够将原始的大模型预训练结果经过特定优化后转换成这种格式,从而可以更快地被载入使用,并消耗更低的资源。以下是GGUF的一些关键特点:
紧凑的二进制编码:通过采用紧凑的二进制编码格式,GGUF能够有效地减少文件大小,使得模型数据更加高效地存储和传输。
优化的数据结构:GGUF格式利用了优化的数据结构,这有助于提高数据访问速度,尤其是在处理大规模数据集时。
内存映射:该格式支持内存映射技术,这意味着模型数据可以直接映射到内存中,从而提高了数据处理的效率。
跨硬件平台优化:GGUF旨在支持不同的硬件平台,包括CPU和GPU,使得模型能够在各种设备上高效运行。
多种模型格式:GGUF不仅限于一种特定的模型格式,它包括原始格式、exl2、finetuned模型等多种格式,每种都有其特定的应用场景和优化目标。
总的来说,GGUF是为了解 ...
实验室服务器连网
当实验室服务器无法联网时,可以将服务器流量转到个人计算机上,前提是不违反实验室规定。
使用clash4windows,Allow LAN,服务器上export http_proxy=http://...:7890和export https_proxy=http://...:7890,...是本机ip地址,如果本机和服务器处于同一以太网下,用以太网ip,如果处于校园网下,用WLAN校园网ip。7890是clash4windows的端口。
通过wget www.baidu.com查看是否连接成功。
这样就是在本次登录时(因为export仅限于本次登录修改环境变量)将服务器的流量走本机,从而连接外网。
Linux服务器安装miniconda
# step 1: 获取安装shell脚本文件wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh# step 2: 执行脚本文件安装bash Miniconda3-latest-Linux-x86_64.sh# step 3: 激活source ~/.bashrc
Linux的export命令
Linux export 命令用于设置或显示环境变量。
在 shell 中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登录操作。
语法:
export [-fnp][变量名称]=[变量设置值]
-f 代表[变量名称]中为函数名称。
-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p 列出所有的shell赋予程序的环境变量。
实例:
# export -p //列出当前的环境变量值declare -x HOME=“/root“declare -x LANG=“zh_CN.UTF-8“declare -x LANGUAGE=“zh_CN:zh“declare -x LESSCLOSE=“/usr/bin/lesspipe %s %s“declare -x LESSOPEN=“| /usr/bin/lesspipe %s“declare -x LOGNAME=“root“declare -x LS_COLORS=““declare - ...
Linux中的snap
前言 通过Snap可以安装众多的软件包。需要注意的是,snap是一种全新的软件包管理方式,它类似一个容器拥有一个应用程序所有的文件和库,各个应用程序之间完全独立。所以使用snap包的好处就是它解决了应用程序之间的依赖问题,使应用程序之间更容易管理。但是由此带来的问题就是它占用更多的磁盘空间。
通过snap安装的软件默认路径为/snap/
查看已通过snap安装的snap包snap list可以查看,默认带的组件是core、lxd、snapd
可以搜索想要的snap包,例如tomcatsudo snap search tomcat
安装snap包sudo snap install tomcat-sample
删除snap包sudo snap remove tomcat
卸载snapsudo apt autoremove --purge snapd
要注意卸载会连带snap安装的所有软件
CentOS和Ubuntu区别
CentOS和Ubuntu都是流行的服务器操作系统,两者都具有强大的功能和安全性,但也有一些区别。选择哪个操作系统取决于我们特定的需求,当然也包含部分经验或着偏好。
二者都是免费的开源操作系统,可用于服务器和桌面应用。以下是它们之间的一些主要区别:
来源和支持: CentOS是基于Red Hat Enterprise Linux(RHEL)的开源版本,由社区维护,而Ubuntu是基于Debian的Linux操作系统,由Canonical Ltd.公司支持和维护。
稳定性和可靠性: CentOS是一个以稳定性和可靠性为重点的操作系统,在安全性和性能方面经过了广泛的测试和验证。Ubuntu也非常稳定,但由于其快速发展的特性,它的新版本可能会有一些bug。
软件库和软件包管理: Ubuntu具有大量的软件库和软件包,用户可以通过apt-get命令轻松安装和升级软件。CentOS具有更少的软件包,但是其软件包管理工具yum相对来说更加稳定和可靠。
内核版本: CentOS通常包含较旧的内核版本,但它们已经被证明是非常稳定和可靠的。Ubuntu则使用最新的内核版本,提供了更多新功能 ...
大模型调研-20240425
注:该文章目前仅针对LLM。
预备知识 LLM的处理流程:
输入数据,文本,表示成单词序列或字符序列;
tokenizer,将文本进行分词,形成单词序列,然后根据词典映射成token序列,通常开源分词器如sentencepiece;
Embedding,将token映射成一个实数向量;
位置编码 positional encoding;
Transformer,三种LLM常用的架构,encoder-decoder,prefix-decoder,causal-decoder,后两个为decoder-only,如LLaMA和GPT均为decoder-only;
自回归生成 autoregressive 方式,即逐个生成输出序列中的每个token,解码过程中,每次生成一个token,使用前面已生成的内存作为上下文,来帮助预测下一个token
输出,生成的token通过输出层,通常是线性变换加上softmax,将每个位置的概率分布转为对应token的概率,根据概率,选择最高的token或者作为模型的预测结果。
国外知名LLM
公司
大模型
说明
OpenAI
GPT系列, ...
ICP多媒体数据传输
ICP上多媒体数据的传输问题,大致分两种:
一种是多媒体文件的直接传输,比如图像文件.jpg,.bpg,视频文件.mp4,.mkv,文本文件.txt和语音文件.mp3等。这种类型的传输比较简单,和图像传输一样,程序里规定一次传输的数据量,然后编码传输即可。
第二种是以直播形式进行的实时视频或者语音传输,这种方式也有两种解决思路。第一种是用程序编码数据然后传输,这种方式比较简单,只需要在python中调用API即可,问题在于比如对于视频传输,每一帧压缩后的数据量不同,那么在SDR上的数据帧很难定义(但也不是完全没办法),总之,这种方式不够灵活。第二种是用多媒体软件自带的推流功能,比如VLC的UDP,RTSP推拉流,这种方式很灵活,但问题在于如何在SDR上每次读取指定字节量的数据。后期如果使用网络实现视频传输,那么只能使用第一种思路。