0%

GPU

  • 大模型往往含有大量的参数和复杂的神经网络结构,需要高度的并行处理能力和大的内存带宽来有效地训练和运行。GPU在这些方面的优势让它成为运行大型AI模型的首选硬件。但这不意味着CPU完全无法运行这些模型,只是相对来说CPU运行起来效率低,可能会非常慢,因此在实际应用中通常选择GPU来进行深度学习任务。

Fine-tuning vs Embedding

  • If you are trying to “teach” the model new information, embeddings is the way to go. If you want to change the structure or way it response, then use fine-tuning.

  • Fine-tuning: Teach the model how to answer a question (e.g. structure/format, personality, etc)
  • Embedding: Provide the model with new/specific information with which to answer questions.

魔法指令

魔法指令 功能说明
%pwd 查看当前工作目录
%ls 列出当前或指定文件夹下的内容
%cat 查看指定文件的内容
%hist 查看输入历史
%matplotlib inline 设置在页面中嵌入matplotlib输出的统计图表
%config Inlinebackend.figure_format='svg' 设置统计图表使用SVG格式(矢量图)
%run 运行指定的程序
%load 加载指定的文件到单元格中
%quickref 显示IPython的快速参考
%timeit 多次运行代码并统计代码执行时间
%prun cProfile.run运行代码并显示分析器的输出
%who / %whos 显示命名空间中的变量
%xdel 删除一个对象并清理所有对它的引用

快捷键

JupyterLab 的快捷键可以分为命令模式下的快捷键和编辑模式下的快捷键,

所谓编辑模式就是处于输入代码或撰写文档状态的模式,在编辑模式下按Esc可以回到命令模式,在命令模式下按Enter可以进入编辑模式。

  • 命令模式下的快捷键:
快捷键 功能说明
Alt + Enter 运行当前单元格并在下面插入新的单元格
Shift + Enter 运行当前单元格并选中下方的单元格
Ctrl + Enter 运行当前单元格
j / kShift + j / Shift + k 选中下方/上方单元格、连续选中下方/上方单元格
a / b 在下方/上方插入新的单元格
c / x 复制单元格 / 剪切单元格
v / Shift + v 在下方/上方粘贴单元格
dd / z 删除单元格 / 恢复删除的单元格
Shift + l 显示或隐藏当前/所有单元格行号
Space / Shift + Space 向下/向上滚动页面
  • 编辑模式下的快捷键:
快捷键 功能说明
Shift + Tab 获得提示信息
Ctrl + ]/ Ctrl + [ 增加/减少缩进
Alt + Enter 运行当前单元格并在下面插入新的单元格
Shift + Enter 运行当前单元格并选中下方的单元格
Ctrl + Enter 运行当前单元格
Ctrl + Left / Right 光标移到行首/行尾
Ctrl + Up / Down 光标移动代码开头/结尾处
Up / Down 光标上移/下移一行或移到上/下一个单元格

说明:对于 macOS 系统可以将Alt键替换成Option键,将Ctrl键替换成Command键。

Jenv

列出已安装的Java版本:

运行以下命令列出已安装的Java版本:

1
jenv versions

这会显示所有已安装的Java版本。

5. 设置全局Java版本:

你可以选择设置一个全局的Java版本,该版本会被默认使用。运行以下命令:

1
jenv global <jdk_version>

<jdk_version> 替换为你想要设置为默认的Java版本。

6. 设置项目特定的Java版本:

如果你想在特定的项目中使用不同的Java版本,可以进入到项目的目录,然后运行以下命令:

1
jenv local <jdk_version>

这会在项目目录下创建一个 .java-version 文件,指定项目特定的Java版本。

7. 验证Java版本:

在终端中运行以下命令验证当前系统使用的Java版本:

1
java -version

确保输出显示的是你所期望的Java版本信息。

通过以上步骤,你可以使用 jenv 管理多个Java版本,并且在不同的项目中切换使用不同的Java版本。

the Asynchronous Server Gateway Interface.

conda相当于虚拟机,在里面安装python和依赖

  • 查看环境

    1
    conda env list
  • 新建环境

    1
    conda create --name your_env_name

    指定python版本

    1
    conda create --name xxx python=3.10
  • 激活环境

    1
    conda activate xxx
  • 删除环境

    1
    conda remove --name xxx --all

SSO (single sign-on)

https://ninjaauth.com/sso-single-sign-on

keycloak

前提

  • 需要jdk9以上环境

config server

  • 编辑 /conf/keycloak.conf ,配置mysql连接信息 (mysql创建keycloak库)

  • 配置 admin cli 环境变量 (方便直接命令操作,等同于界面操作)

    1
    2
    3
    # keycloak
    export KCADM="/Users/dongwei/Applications/keycloak-23.0.3/bin/kcadm.sh"
    export HOST_FOR_KCADM=localhost

bootstrap

  • 首次启动

    KEYCLOAK_ADMIN=admin KEYCLOAK_ADMIN_PASSWORD=xxxxxx ./bin/kc.sh start-dev

  • 后续启动

    ./bin/kc.sh start-dev

  • 生效 KCADM

    $KCADM config credentials --server http://localhost:8080 --realm master --user admin

    提示输入密码即可 (1sou2sou)

​ 验证 $KCADM get serverinfo

config realm

  • 创建新的realm

    $KCADM create realms -s realm="jarvex" -s enabled=true

config clients

1
$KCADM create clients -r jarvex -s clientId="jarvex-client-test-1" -s enabled=true -s name="test Client 1" -s protocol=openid-connect -s publicClient=true -s standardFlowEnabled=true -s 'redirectUris=["http://127.0.0.1:8001/app/*"]' -s baseUrl="http://127.0.0.1:8001/app/" -s 'webOrigins=["*"]'

在 FastAPI JWT Auth 中,Refresh Token(刷新令牌)和 Access Token(访问令牌)是两种不同的令牌,用于实现认证和授权机制。

  1. Access Token(访问令牌):Access Token 是一个短期的令牌,用于验证用户的身份并授权用户访问受保护的资源。Access Token 是通过用户提供的凭证(如用户名和密码)进行身份验证后生成的,通常具有较短的有效期(例如几分钟或几小时)。客户端在每次请求受保护的资源时,需要在请求的头部或请求参数中携带 Access Token,以证明其有权访问该资源。
  2. Refresh Token(刷新令牌):Refresh Token 是一个长期有效的令牌,用于在 Access Token 过期后重新获取新的 Access Token。当 Access Token 过期时,客户端可以使用 Refresh Token 向服务器发送请求来获取新的 Access Token,而无需重新提供用户名和密码等凭证。通常情况下,Refresh Token 的有效期要比 Access Token 更长。

使用 Refresh Token 的主要目的是增强安全性和减少频繁的身份验证操作。通过将 Access Token 的有效期设置较短,可以降低令牌泄露的风险。当 Access Token 过期时,使用 Refresh Token 获取新的 Access Token,这样可以减少频繁地要求用户重新提供凭证的情况。

一般的流程是,客户端在进行身份验证后会收到一个 Access Token 和一个 Refresh Token。客户端使用 Access Token 来访问受保护的资源,当 Access Token 过期时,客户端使用 Refresh Token 向服务器请求新的 Access Token。

FastAPI JWT Auth 提供了相应的功能和装饰器来处理 Access Token 和 Refresh Token 的生成、验证和刷新等操作,以方便实现 JWT 认证和授权。

refresh tokens cannot access an endpoint that is protected with jwt_required(), jwt_optional(), and fresh_jwt_required()

access tokens cannot access an endpoint that is protected with jwt_refresh_token_required().

Refresh Tokens

These are long-lived tokens which can be used to create a new access tokens once an old access token has expired.

vimdiff

进入冲突解决窗口

1
git mergetool

窗口显示四部分内容

  • LOCAL – this is file from the current branch

  • BASE – common ancestor, how file looked before both changes

  • REMOTE – file you are merging into your branch

  • MERGED – merge result, this is what gets saved in the repo

移动窗口方法

1
2
3
4
Ctrl w + h   # move to the split on the left 
Ctrl w + j # move to the split below
Ctrl w + k # move to the split on top
Ctrl w + l # move to the split on the right

处理冲突

  • 可移动到merge窗口去手动改

  • 使用命令

    1
    2
    3
    :diffg RE  # get from REMOTE
    :diffg BA # get from BASE
    :diffg LO # get from LOCAL

保存退出

1
:wqa

Meld

todo

机器学习术语表

机器学习类型

什么是机器学习?

根据机器学习系统学习进行预测或生成内容的方式,机器学习系统可分为以下一个或多个类别:

  • 监督式学习
  • 非监督式学习
  • 强化学习
  • 生成式 AI
  • 实现机器学习的一般步骤:
  1. 数据收集
  2. 数据准备
  3. 数据分析
  4. 训练算法
  5. 测试算法
  6. 应用算法

数据

训练集、验证集、测试集