0%

杜架的记录与分享,记录与思考有价值的信息,主要包含:碎片化思考,阅读笔记分享,开源项目(软件)介绍。内容主题可能有极大的个人喜好偏向,努力做个输出的人,爱我所爱,想我所想,写我所写。

Img

笔记

埃隆·马斯克传读书笔记之五步工作法

  1. 质疑每项要求,提出任何一项要求时,都应该附上提出这一要求的人。永远不要接受一项来自某个部门的要求,比如来自“法务部门”或者“安全部门”的要求。你必须知道提出这项要求的人的名字,接下来你应该质疑它,不管这个人有多聪明,聪明人提出的要求才是最危险的,因为人们不太可能质疑他们。这件事要一直做下去,即便这项要求来自我马斯克本人,质疑后,大家就要改进要求,让它变得不那么愚蠢。
  2. 删除要求当中所有你能删除的部分和流程,虽然你可能还得把它们加回来。事实上,你如果最后加回来的部分还不到删除部分的 10%,那就说明你删减得还不够。
  3. 简化和优化,这应该放在第 2 步之后,因为人们常犯的错误就是简化和优化一个原本不应该存在的部分或者流程。
  4. 加快周转时间,每个流程都可以加快,但只有遵循了前三个步骤之后才能这么做,在特斯拉工厂,我错误地把很多精力花在加快生产流程上,后来我才意识到有些流程原本就应该被拿掉。
  5. 自动化,在内华达工厂和弗里蒙特工厂犯下的一个大错就是我一开始试图将每个步骤进行自动化改造,我们本应该先质疑所有要求,删除不必要的部分和流程,把问题筛出来、处理掉,然后再推进自动化

推荐文章

  1. 写给 5 年前端妹子的三万字脚手架教程

作者循环渐进讲解了如何从零到一写一个前端脚手架,语言幽默风趣,读完确实收益匪浅。 读完以后,你会学到:

  • 如何搭建一个脚手架的工程
  • 如何开发和调试一个脚手架
  • 脚手架中如何接收和处理命令参数
  • 脚手架中如何和用户交互
  • 脚手架中如何拷贝一个文件夹或文件
  • 脚手架中如何动态生成一个文件
  • 脚手架中如何处理路径问题
  • 脚手架中如何自动安装模板所需依赖
  1. 零基础大模型微调及部署指南

文章关注最实用的技术,忽略相关背景及周边技术介绍,比如高效微调只介绍 LoRA,包含如下内容:

  • 模型训练的基础知识
  • 理解训练中的重要参数
  • 构造训练数据的方法
  • 如何计算训练所需的硬件资源
  • 高性能推理和部署
阅读全文 »

airflow 的入门经验

安装 airflow

升级 docker 与 docker-compose 版本

Install Docker Compose v2.14.0 or newer on your workstation.

这里记录一下我在 ubuntu 里升级方法。
首先升级相应的 docker 版本

1
2
apt-get update
apt upgrade docker-ce

由于 ubuntu 镜像源较旧,无法更新到最新版 docker-compose,接下来手动升级 docker-compose。
在手动升级之前,要确保 docker-ce 支持的最高 docker-compose版本

Img

手动在https://github.com/docker/compose/releases下载 docker-compose 安装包。

首先找到 docker-compose 地址

1
2
root@lab:/# which docker-compose
/usr/bin/docker-compose

用下载的文件替换如上文件即可。

阅读全文 »

杜架的记录与分享(004 期)

杜架的记录与分享,记录与思考有价值的信息,主要包含:碎片化思考,阅读笔记分享,开源项目(软件)介绍。内容主题可能有极大的个人喜好偏向,努力做个输出的人,爱我所爱,想我所想,写我所写。

Img

从 004 开始,源于最早的《杜架的技术月刊》只写了 3 期,由于懒惰就没继续写了,现在想想月刊和周刊都有心理负担,索性想写就写,名称也改为《杜架的记录与分享》,就当记录与思考有价值信息的笔记吧

思考

我认为最有价值的 AI 大模型应用

一个是胃之书 AI,大语言模型 AI 饮食记录员,拍张照片就可以分析食物背后的故事,这个应用我是没有想到的,以此发散思维,LLM 也可以应用在个人记账的场景中。

另一个是可辅助盲人「看见世界」,借助 LLM,TTS 等技术可以让盲人看见世界。

之所以说这两个有价值,和烂大街的 AI 应用相比,确实是我没想到的。

阅读全文 »

本文案例为 sql server,其他数据源切换为相应的驱动即可。

依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.5</version>
<exclusions>
<exclusion>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>4.3.0</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<scope>runtime</scope>
</dependency>

配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# mybatis
mybatis-plus:
mapper-locations: classpath:/mapper/*.xml

spring.datasource:
dynamic:
primary: db1
datasource:
db1:
url: jdbc:sqlserver://****;
username: ****
password: ****
db2:
url: jdbc:sqlserver://****;
username: ****
password: ****

代码

xml 文件省略,保持和 mybatis 一样即可,代码使用上只用在 Mapper 或者 DAO 文件上使用@DS声明即可。

1
2
3
4
5
6
@Mapper
@DS("db2")
public interface BehaviorEmailDao extends BaseMapper<BehaviorEmail> {

Set<String> getSendRecordByDate(@Param("lastDate") String lastDate);
}

默认主库为 db1,因此操作 db1 的接口可不用声明。

构建环境

CUDA 版本

经过测试,Llama-3 只有在 CUDA 新版下才可以运行,CUDA Version: 12.4 验证通过。

代理

在公司内网环境,往往需要代理才能下载模型文件。我这里使用 session 模式下全局。
~/.bash.rc

1
2
export HTTP_PROXY="http://*.*.*.*:*"
export HTTPS_PROXY="http://*.*.*.*:*"

安装依赖

1
2
3
4
5
pip install fastapi==0.110.2
pip install uvicorn==0.29.0
pip install requests==2.31.0
pip install transformers==4.40.0
pip install accelerate==0.29.3

Meta-Llama-3-8B-Instruct vs Meta-Llama-3-8B

llama3-8B 是基本模型,基本上只完成输入提示,但 llama3-8B Instruct 针对指令跟随和多轮对话模板进行了微调,用于助理完成作为聊天响应。

如果你的特定目的是为了聊天完成,那么指令是最好的选择,否则如果它是为了简单的输入完成,那么基本模型就可以了

阅读全文 »

最近想使用一下 llama3,发现 pytorch 版本低不支持,升级 pytorch 版本就需要升级 cuda 版本,升级 cuda 版本需要提前升级 nvidia 驱动版本。

升级 nvidia 驱动版本

卸载驱动

1
2
sudo apt-get purge nvidia-*
sudo apt-get autoremove

https://www.nvidia.com/Download/driverResults.aspx/224022/en-us/
下载驱动并安装

1
sudo sh NVIDIA-Linux-x86_64-550.76.run
阅读全文 »

还有 1 天就过农历年了,2023 也就永远的离我们而去,我想在农历新年前抓住最后的影子,回顾一下我这一年我想记录的工作与生活。今年是写年终总结的第 3 年,回看过去的两年,内心唏嘘。

我想给 2023 年一个关键词:开心

虽然病痛折磨了三个月,我依然在坚强的抗争,但我相信免疫力终究会战胜病魔。开心的原因是我有老婆了,想到这个嘴角就会上扬。她虽然很烦人,很气人,脾气差,但不妨碍我爱她,不妨碍我开心的笑,不妨碍我喜欢她笑,我也是那个有老婆的人。

工作

工作少了些许忙碌,多了一些迷茫,大环境不好,公司业绩很差,多了很多别离,剩余的我们还在。说的出来的项目有三个:

  1. AI Shopping
  2. Behavior Email
  3. Intent Email

相较以前的工作有两点变化:一个是 AI,一个是贴近 Email Marking 业务。AI 是 2023 最火领域,看了一些书和课程,了解了它的机制,但这条路确实还很难走,2024 还要继续加强这方面的投入和学习。

阅读全文 »

在日常项目开发中活用设计模式,有时候可以做到事半功倍效果,提高代码设计的扩展性。在这篇文章中列举一些我在产线 spring 项目中,真实使用到的设计模式。由于 spring 框架的使用特殊性,我们必须对原生设计模式代码做一定的调整,做到活学活用。

策略模式

业务场景:

我们有一个系统,event hub,主要用来接受各种平台发来的事件,进而告警和管控。每个系统发来的事件不同,对于不同系统,每个系统我们都需要写一个解析器,最原始最直接的代码是各种 if else if,但扩展性和封装性都很差。

要解决这种 if…else if 场景,可以考虑使用策略模式。

代码

首先定义一个接口EventHandler

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public interface EventHandler {
/**
* 获取type 类型
*
* @return
*/
String getType();

/**
* 对事件进行加工处理
*
* @param event
* @return
*/
JSONObject handleEvent(JSONObject event);
}

实现不同系统的处理器,通过实现 EventHandler 接口,可以扩展更多系统,大大增强了系统的扩展性。这里举两个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@Component
public class GrafanaEventHandler implements EventHandler {
@Override
public String getType() {
return "grafanaAlert";
}
@Override
public JSONObject handleEvent(JSONObject event) {
//省略其他处理逻辑
}
}
@Component
public class prometheusEventHandler implements EventHandler {
@Override
public String getType() {
return "prometheusAlert";
}
@Override
public JSONObject handleEvent(JSONObject event) {
//省略其他处理逻辑
}
}

在系统中调用生成的各种处理器

阅读全文 »

data stream 允许跨多个仅追加的时间序列索引,同时为请求提供单个命名资源。数据流非常适合日志、事件、指标和其他持续生成的数据。

为什么需要 data stream?

单纯 ILM 方案管理时间序列索引较繁琐,需要使用别名,多次操作。使用 data stream 可以简化操作

适合场景

数据流非常适合日志、事件、指标和其他持续生成的数据。

符合如下特点:

  • 数据极少更新
  • 时间序列数据
阅读全文 »

Side Project 项目之 toolkit

最近生了一场病,持续了一个多月,身体渐渐恢复,多次想提笔写点什么,许久没有动笔,不知从何开始。偶然间看到去年写的两篇《关于 Side Project 的思考和想法》《从 0 到 1 做产品,独立开发者初探之路》文章挺受人欢迎的,索性就动笔写一下最近在病中写完的一个小的个人软件Toolkit,专为程序员设计的极简、插件化的工具集!。

缘由

之前看到过两款软件:utools 和 rubick,研究了一下,发现他们都是 electron 写的,比较好奇怎么实现插件化,索性就给自己写个,将自己常用的工具插件化,定位为程序员的插件化工具集。

相似竞品

  1. rubick
  2. utools
  3. DevToys
  4. it-tools

产品设计

界面设计

正常页面面板点击后打开各类工具,通过搜索框快速搜索出想要的工具

阅读全文 »