以下是实际操作
以下是实际操作
西天路上,九九八十一难,唐僧四人遭遇的各种妖魔鬼怪,每个章节结束,都发现不过是天上各路神仙的小号而已。
要解决这个问题似乎也不难,放弃取经,各回各家。不过,回家是不是又树立了一个新的目标,回家路上是不是也会有新的妖怪出现?
似乎,只要心有所念,必定会有配套的烦恼涌现。
最近迷上了chatGPT,逐渐得出一个结论,你使用chatGPT的效果,其实就是你和这个数字世界的边界,或者你和这个数字世界的熟悉程度。
例如
我越来越相信高斯分布,这个世界虽然很大,钟型曲线包裹下的芸芸众生,差异其实很小。而一旦你发现自己和长尾集合中的某个现象有了交集,一定不要犹豫、不要懒惰,要努力抓着它,这是让你摆脱中轴线的唯一机会。
2019年第一次听JJ介绍大模型的时候,除了惊奇外,没有多少想法,毕竟所需要的储备知识近乎于无,而且没有任何应用场景。虽然随后的几年,自己隐隐约约觉得,AI技术是真正的工具,使用这个工具,我可以更好的认识世界、认识自己,就像小时候利用脚蹼进行自由泳的练习一样。
中间几年无非疫情、各种无关紧要的政府项目,JJ也离职去开创自己的事业,虽然短短1年多,我从他这里没有学习到任何核心技术,但是这种人与人的差距,深深影响了我对高斯分布的看法。
终于,chatGPT来了,我梦寐以求的工具,竟然以这么戏剧化的方式将临身边。
语句字符串S,就是一个句子,它的概率分布,可以是每个单词在这句话中出现的概率。
𝑝(𝑆) = 𝑝(𝑤1) 𝑝(𝑤2|𝑤1) 𝑝(𝑤3|𝑤1𝑤2) ··· 𝑝(𝑤1|𝑤1𝑤2 ··· 𝑤n)
公式的第一行,是将句子的概率分解为每个单词的条件概率相乘的形式, 例如,p(w2|w1)表示给定w1出现后,w2出现的概率。按照这样的方式,我们可以得到整个句子的概率分布。
总体来说,这个公式展示了语言模型如何基于先前的单词或文本序列,计算出下一个单词出现的概率,并进而计算整个句子的概率分布。
"I"出现了1次
"love"出现了1次
"to"出现了1次
"eat"出现了1次
"pizza"出现了1次
最后,我们可以计算每个单词在字符串S中出现的概率,如下所示:
P(“I”) = 1/5 = 0.2
P(“love”) = 1/5 = 0.2
P(“to”) = 1/5 = 0.2
P(“eat”) = 1/5 = 0.2
P(“pizza”) = 1/5 = 0.2
这个概率分布可以用于各种自然语言处理任务,例如语言模型、机器翻译和文本分类等。
大模型训练时,面对海量数据,没法承担高昂的标注成本,往往会采用自监督学习的方式。
自监督学习是一种无监督学习的方法,它通过利用数据的某些属性来设置伪监督任务来替换标准监督任务,从而使模型能够从大量未标记的数据中进行训练。
自监督学习的目标是学习到数据的有用表示,这些表示可以用于各种任务,例如分类、检测、分割和生成等。
自监督学习的一个例子是对于“损失函数中使用到的监督信息无需人工标注”的训练范式的一种统称,自监督学习可以用在预训练上,也可以用在实际任务本身的训练上,当然目前看来还是用在预训练上的情况显著更多.
Transformer摆脱了人工标注数据集的缺陷,模型在质量上更优、 更易于并行化,所需训练时间明显更少,
Transformer通过成功地将其应用于具有大量和有限训练数据的分析,可以很好地推广到其他任务。
Transformer模型架构如下图
按照xcode后,如果遇到更新,往往会出现各种问题,比如watch模拟器无法安装成功,或者就是更新的最后0.0001%总是完成不了,appstore里菊花转圈不断。
解决方法:
我最近不太使用swift开发,所以决定删除xcode,顺便节省磁盘空间。
然而,删除xcode后,更新提示还是依然会出现,采取如下几步顺利接触更新提示。
csrutil disable
22-11-06/Users/xxxxx~%>cd Library/Apple/System/Library/Receipts
22-11-06/Users/XXXXX~%>sudo rm -rf com.apple.pkg.CLTools_*.*
csrutil enable
22-11-06/Users/xxxxx~%>sudo xcode-select -switch /
22-11-06/Users/XXXX~%>xcode-select -p
/Library/Developer/CommandLineTools
brew update
用最简洁的方式,在prompt里实现git branch的信息
增加parse_git_branch函数
final version
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
PS1="%F{12}%D%d~%#>%f%F{red}\$(parse_git_branch)%f"
https://zsh-prompt-generator.site/
autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
setopt prompt_subst
#RPROMPT=$vcs_info_msg_0_
PS1="%F{cyan}%D%d~%#>%f"$vcs_info_msg_0_
add git branch name to bash prompt
https://scriptingosx.com/2019/07/moving-to-zsh-06-customizing-the-zsh-prompt/
我在watchlist上新开了一个分支,然后用这个分支模拟一个小团队内部的工作,这个团队有两个成员iMac和MacPro。
由于在iMac上的目录里包含了虚拟空间env,因此在同步到github上以后,我发现macpro里也多了env这个目录和其下的所有文件。
显而易见,这造成如下问题
因此这个问题是必须要要解决的。
然后删除已经提交到github上的内容
最后,在macpro这台电脑的对应git目录里,执行git pull
下图就是执行git pull后,在本地删除env目录的情况
reference
使用git rm解决不应该提交的内容
当brew update无法使用时,运行brew doctor,一条条去修改就好。
Homebrew bottles (binary package) depend on Command Line Tools (CLT) for installation. After an upgrade, CLT should be reinstalled yet it does not mean xcode installation. To check if you have CLT installed?
brew config
If you found CLT: N\A. Follow @carlocab's answer. Run: xcode-select --install, ...
检查目录
brew自身的升级
各种package的升级
在公司网络,无法下载command line tools,可以直接从apple官网下载
https://developer.apple.com/download/all/
使用如下命令
git config --global --add safe.directory /opt/homebrew/Library/Taps/homebrew/homebrew-services
参考
https://stackoverflow.com/questions/9329243/how-to-install-xcode-command-line-tools
间隔2-3个月后,重新开始编程遭遇的最常见问题是,是环境搭建
首先遭遇的是tkinter问题,如下所示
import _tkinter # If this fails your Python may not be configured for Tk
在stackoverflow上搜索,大部分答案给出的都是你没有安装好tkinter这个库,解决的方式也很简单,用brew安装
但是对我而言,问题没有这么简单,因为我执行这个命令后,出现的是新的错误提示
fatal: not in a git directory
Error: Command failed with exit 128: git
参考下面reference里小哥的分析,这是因为homebrew的组件homebrew-core和homebrew-cask没有被识别为Git仓库。
解决办法也很简单,直接按照brew的提示就好,输入
brew -v
按照提示来操作即可,如下图
怎么,还是报错,因为我copy如上命令时,没有发现最后一行其实是没有"/"链接的,因此会出现no such file or directory的提示,只要copy正确的命令即可
下来,就是正常安装
brew install python-tk
这样就完事了吗,当然不行,执行flask run,下面报错没有user这张数据库表,那么显然是数据库的问题了
因为我们使用的是SQLAlchemy的数据库,因此我们需要先建立一个数据库文件。
同时,我们会在目录下发现一个名为data.db的文件,这个文件名称来自app.py中的app.config函数
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////' + os.path.join(app.root_path, 'data.db')
时隔多日,重启flask学习,这次打算严格按照如下技能要求自己
折腾了一个月,前天手续终于办完。明天母子两人就要去加拿大,准备早晨6点从家里出发赶往浦东机场。
今天特地请假在家,准备一起整理行李,但是工作上事情不断,一直拖到下午才有点空闲,5点钟我提议和马达一起去遛大汪。过去他肯定是拒绝的,不愿意放下手中的ipad,这次挺意外,非常爽快的答应下来。
我印象有挺长时间,马达和我经常结伴去遛大汪。那时候他大概9岁,10岁,大汪也刚刚被我们营救回家。待他上了初中,我们就很少一起活动了。
小区旁边有条河,走了一圈,我絮絮叨叨,努力想把所有青春期的经验传授给他:不要打架,也不要被欺负,多看书,多问问题,多做题,和同学友好相处,照顾好妈妈,不要挑剔妈妈做的饭不如外婆的好吃,他要么就是点头,要么就说知道了,有时候也会插嘴说,我是星战粉,和同学肯定有的聊,会成为好朋友。
走过了小桥,绕回河边,马达突然对我说,可能很久见不到你了,要不大家抱一抱吧。他比我高近10厘米,因为练习剑道的缘故,肩膀很结实,我抱住他,就像抱着一个陌生人,眼眶突然就发热,赶快和他说,你和大汪也抱一下,趁着他蹲下来去抱大汪,我赶快偷偷的擦眼泪。
待他站起来,我的眼泪也隐藏好了,两人就顺着原路返回,走到小区北门口,我舍不得这么快结束,对他说,你看大汪一点也不累,舌头都没有吐出来,要不我们再走一圈?他点点头,我们就打算从南门绕回小区。
两人开始都有点沉默,然后他就笑嘻嘻的说,给你讲一件很奇怪的事情,你不要觉得无聊。我几乎马上猜到,他要讲的就是两年前学校里非常轰动的手枪+手机事件,大概初二的时候他给我讲过好几次了,我装作头一次听说的样子,让他说。
没想到,这次的版本确实让我大感意外。过去的故事里,马达只是一个隔壁宿舍的旁观者,随着这次更多的细节披露,我才发现,故事原本要精彩许多,包括他打算用剑道对抗手枪的计划,让我开心不已。
是柯尔特,他补充说,小熊同学带的就是柯尔特,加拿大应该也有真枪吧,我说是的,加拿大是有真枪的,等我去了可以一起玩。
旁边一辆改装过的奔驰,轰隆隆的开过,马达非常鄙夷的说,我打算拿到驾照后,开一辆哈雷,那种车把非常靠前的,这种奔驰真是不配这种声音。我说是的,我们还要开飞机,我从小就觉得自己已经学会了开飞机,拉杆前推就是降落,后拉就是升起。我们还可以搞一艘船来开开。
好吧,祝你自由。