偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Deno 和 Jupyter Notebook:如何優(yōu)雅地學(xué)習(xí) LLM?

人工智能
工欲善其事,必先利其器。 LLM 的開發(fā)跟傳統(tǒng)的項(xiàng)目開發(fā)區(qū)別在于,LLM 很多請求是耗時(shí)甚至是耗錢的,基礎(chǔ)的如調(diào)用 OpenAI API,每次都會消費(fèi)一定的 token。

工欲善其事,必先利其器。 LLM 的開發(fā)跟傳統(tǒng)的項(xiàng)目開發(fā)區(qū)別在于,LLM 很多請求是耗時(shí)甚至是耗錢的,基礎(chǔ)的如調(diào)用 OpenAI API,每次都會消費(fèi)一定的 token。

另外,我們可能會反復(fù)調(diào)試一段代碼來測試最合適的參數(shù)和 prompt,如果我們像傳統(tǒng) Nodejs 程序一樣每次都從頭重新跑一次,既耗時(shí)也花費(fèi)比較多。所以我們需要使用適合機(jī)器學(xué)習(xí)和大模型領(lǐng)域的專用開發(fā)工具。

Deno 和 Jupyter Notebook

在正式介紹 Jupyter Nodebook 之前,我們先介紹一下 Deno,我相信大家或多或少聽說過 Deno,他是 Node.js 之父 Ryan Dahl 創(chuàng)建的新項(xiàng)目。更多的介紹可以看 Deno 的官網(wǎng),一句話介紹,Deno 是把 nodejs 中分散的生態(tài)整合在一起,并提供更現(xiàn)代的框架支持。 例如 Deno 開箱支持 TypeScript、自帶格式化工具、自帶測試框架、高質(zhì)量的標(biāo)準(zhǔn)庫,并且有比較好的安全性,默認(rèn)腳本不能訪問文件、環(huán)境或者網(wǎng)絡(luò)等等好用的功能。

可以理解成一個(gè)更強(qiáng)的 Nodejs,當(dāng)然 Deno 不是我們小冊的重點(diǎn),你會 nodejs 就會 deno,并且獲得了很多 nodejs 需要配置才能使用的功能。

在了解完了 Deno 后,我們將學(xué)習(xí)在 AI 領(lǐng)域比較常用的工具 — Jupyter Notebook,我們少廢話,先看演示。

const text = await Deno.readTextFile("./people.json");

CleanShot 2024-03-18 at 21.46.36@2x.pngCleanShot 2024-03-18 at 21.46.36@2x.png

Jupyter Notebook 的核心是代碼塊,每個(gè)代碼塊作為一個(gè)整體去執(zhí)行,并且可以多次反復(fù)執(zhí)行。在代碼快的左側(cè),是執(zhí)行順序的標(biāo)記,指這個(gè)代碼塊被執(zhí)行的順序。

例如,如果你先執(zhí)行第一個(gè)代碼塊,它會顯示數(shù)字 1;接著執(zhí)行第二個(gè)代碼塊,它會顯示數(shù)字 2;然后你再執(zhí)行代碼塊 1,它的左側(cè)就會顯示數(shù)字 3。

也就是這個(gè)數(shù)字顯示的是當(dāng)前塊被執(zhí)行的順序,這個(gè)數(shù)字存在的目的是幫助你跟蹤代碼塊的執(zhí)行順序,并且在執(zhí)行過程中保持清晰的狀態(tài)。

這個(gè)理解起來有點(diǎn)怪,我們用 code demo 測試一下,我們在第二塊中顯示變量 text。

CleanShot 2024-03-18 at 21.57.45@2x.pngCleanShot 2024-03-18 at 21.57.45@2x.png

在 Jupyter NoteBook 中,如果一個(gè)代碼快只有一個(gè)變量,那就會自動把該變量顯示出來,類似于 console.log(單個(gè)變量) 但又不一樣,其中有些微妙的區(qū)別在使用中你會感受出來。

所以,當(dāng)運(yùn)行完兩個(gè)代碼塊之后,在 js 的環(huán)境中有了 text 這個(gè)變量。我們可以把這里的從 txt 文件讀內(nèi)容理解成一個(gè)耗時(shí)又耗錢的任務(wù)(就像 OpenAI API 一樣),在運(yùn)行完這個(gè)任務(wù)后,就會把結(jié)果儲存在 text 中,后續(xù)就可以對 text 做任何測試,而不需要重復(fù)的從文件中讀取。

例如,我們可以對 text 進(jìn)行切割。

CleanShot 2024-03-18 at 22.17.58@2x.pngCleanShot 2024-03-18 at 22.17.58@2x.png

如果我們對切割的結(jié)果不滿意,可以調(diào)整切割的方式。

CleanShot 2024-03-18 at 22.18.36@2x.pngCleanShot 2024-03-18 at 22.18.36@2x.png

可以看到,再次運(yùn)行第三個(gè)單元格兩次后,左側(cè)的數(shù)字就變成了 4。

注意,如果上游數(shù)據(jù)發(fā)生了改變,下游并不會自動的更新或者重新運(yùn)行,例如我們這里手動修改 text 的值改成一個(gè)字符串。

CleanShot 2024-03-18 at 22.21.05@2x.pngCleanShot 2024-03-18 at 22.21.05@2x.png

可以看到,后面依賴于 text 的代碼格并沒有自動更新,需要自己手動重新運(yùn)行:

CleanShot 2024-03-18 at 22.20.26@2x.pngCleanShot 2024-03-18 at 22.20.26@2x.png

之所以叫 Notebook 是因?yàn)樘烊恢С?markdown,我們新建一個(gè)塊,然后設(shè)置為 markdown 塊:

CleanShot 2024-03-19 at 11.37.55@2x.pngCleanShot 2024-03-19 at 11.37.55@2x.png

CleanShot 2024-03-19 at 11.39.34@2x.pngCleanShot 2024-03-19 at 11.39.34@2x.png

在運(yùn)行之后,就會渲染出來:

轉(zhuǎn)存失敗,建議直接上傳圖片文件轉(zhuǎn)存失敗,建議直接上傳圖片文件

轉(zhuǎn)存失敗,建議直接上傳圖片文件。

有了 Jupyter NoteBook,我們就可以節(jié)約 費(fèi)事/費(fèi)錢 的請求,并且基于某個(gè)運(yùn)行結(jié)果的輸出,在后面的代碼塊中,不斷嘗試各種解析或者處理方式。同時(shí),也非常方便結(jié)合 markdown 來做一些筆記,獲得比在注釋里記錄更方便的學(xué)習(xí)體驗(yàn)。

配置

Jupyter Notebook 項(xiàng)目開始以 python 為主,后續(xù) deno 提供了 js/ts Kernel 的支持,所以我們需要分別安裝這兩個(gè)。這里以 Mac 環(huán)境演示,如果是 win/linux 可以參考后附的鏈接進(jìn)行安裝。

首先我們需要本地有 python 環(huán)境,最好是 3.9 及以上的 python 環(huán)境。在配置好 python 環(huán)境后,然后安裝 Jupyter Notebook:

pip install notebook

如果你本地 python3 的 pip 別名是 pip3,那就需要:

pip3 install notebook

然后在本地安裝 Deno 環(huán)境:

curl -fsSL https://deno.land/install.sh | sh

安裝完畢 Deno 環(huán)境后,使用 deno 為 Jupyter Notebook 配置 kernel:

deno jupyter --unstable --install

然后通過運(yùn)行以下命令,驗(yàn)證 kernel 是否配置完成:

deno jupyter --unstable

顯示以下即為配置成功:

CleanShot 2024-03-19 at 11.27.05@2x.pngCleanShot 2024-03-19 at 11.27.05@2x.png

然后我們運(yùn)行以下命令啟動 notebook:

jupyter notebook

然后就會自動打開一個(gè)網(wǎng)頁,然后我們就可以正常使用 notebook 了。

目前 deno kernel 的 Jupyter Notebook 不支持代碼提示,所以寫代碼會難受一點(diǎn),大家可以安裝 vscode 插件,使用 vscode 去編輯和運(yùn)行 notebook。

CleanShot 2024-03-19 at 11.43.55@2x.pngCleanShot 2024-03-19 at 11.43.55@2x.png

https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter

CleanShot 2024-03-19 at 11.45.39@2x.pngCleanShot 2024-03-19 at 11.45.39@2x.png

記得在右上角切換 Kernel 為 Deno, 如果切換 Kernel 遇到問題,可以參考文檔: https://code.visualstudio.com/docs/datascience/jupyter-kernel-management

目前在 VSCode 里的體驗(yàn)也有問題,會因?yàn)樽R別不了 Deno 的引用在代碼上顯示出錯(cuò)的樣式(這個(gè)在之后的代碼中也會遇到),但不影響正常運(yùn)行,可以忽略代碼里的飄紅即可。

具體用什么編輯方式書寫 notebook 可以根據(jù)自己的喜好。

安裝參考鏈接:

  1. https://www.python.org/downloads/
  2. https://docs.deno.com/runtime/manual/
  3. https://docs.deno.com/runtime/manual/tools/jupyter
  4. https://jupyter.org/install
  5. https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter

Deno 依賴管理

Deno 直接從遠(yuǎn)程拉取依賴,自帶緩存機(jī)制,而不需要本地安裝,例如我們?nèi)绻枰?lodash 庫,我們不需要像 nodejs 一樣使用 npm/yarn 等來安裝依賴,而是可以直接從遠(yuǎn)程引入:

import _ from "npm:/lodash

如果我們需要鎖定版本,則可以:

import _ from "npm:/lodash@4.17.21"

這個(gè)命令,就會讓 deno 從 npm 找到對應(yīng)的 lodash 包,然后引入,我們就可以在另一個(gè)代碼塊中使用引入后的_,比如:

const a = _.random(0, 5);
a

CleanShot 2024-03-19 at 21.58.38@2x.pngCleanShot 2024-03-19 at 21.58.38@2x.png

當(dāng)然,我們每次都這樣使用完整的鏈接引入就會比較麻煩,所以我們可以在頂層創(chuàng)建一個(gè)文件 deno.json 來給設(shè)置別名。

在跟 notebook 文件同級創(chuàng)建一個(gè) deno.json 文件:

- 1-test-notebook.ipynb
- deno.json

然后填寫其中的內(nèi)容為:

{
  "imports": {
    "lodash": "npm:/lodash@4.17.21"
  },
  "deno.enable": true
}

這里內(nèi)容比較好理解,就是將  "npm:/lodash@4.17.21" 的別名設(shè)置為 lodash,其中"deno.enable": true 是如果你用了 deno 的 vscode 插件,可以讓它識別到,并對 deno 在 vscode 體驗(yàn)的一些優(yōu)化。

設(shè)置完畢后,我們就可以使用別名在 deno 中引入 lodash 了:

import _ from "lodash"

const a = _.random(0, 5);
a

注意,如果你更新了 deno.json 需要重啟 notebook 的內(nèi)核才能讓 deno 拿到最新的別名:

CleanShot 2024-03-19 at 22.05.50@2x.pngCleanShot 2024-03-19 at 22.05.50@2x.png

這里,我們只介紹了足夠本教程使用 Deno 依賴管理,更多信息可以參考。

小結(jié)

這一節(jié),我們學(xué)習(xí)了 在機(jī)器學(xué)習(xí)領(lǐng)域中常用的工具 Jupyter Notebook,這也是我們邁向?qū)I(yè) AI 的一步。你可以看到在 github 中,很多知名的 AI 論文開源的 demo 入口都是一個(gè) Jupyter Notebook,其在 AI 這場景中有不可替代的優(yōu)勢。

當(dāng)然,Deno + Jupyter Notebook 這一套工具只是可選的,即使不配置也可以正常學(xué)習(xí)后續(xù)的課程,只需要將后續(xù)教程中部分 Deno 專有的 API 替換成 Node.js 對應(yīng)的 API 即可。

我個(gè)人建議是嘗試一下 Deno,這可能是未來 js 在后端的風(fēng)向,目前后端的各種 js 運(yùn)行時(shí)在打架,可以都把玩看看,跟 nodejs 對比一下。而且,使用 Jupyter Notebook 在學(xué)習(xí) AI 相關(guān)技術(shù)時(shí)確實(shí)十分方便,也是專業(yè) AI 開發(fā)時(shí)會使用的工具。

責(zé)任編輯:武曉燕 來源: 愛學(xué)習(xí)的蝌蚪
相關(guān)推薦

2022-05-05 12:25:46

Jupyter開發(fā)

2023-07-28 09:59:31

2012-03-13 09:54:42

JavaScript

2020-09-24 05:50:46

PythonJupyter Not編程語言

2022-11-14 11:52:34

DataspellJupyterLabNotebook

2016-10-25 08:49:34

數(shù)據(jù)通信行業(yè)技能圖

2017-05-05 09:45:13

編程語言學(xué)習(xí)代碼

2011-06-16 20:05:41

SEO

2011-06-09 16:23:18

SEO

2020-12-18 08:00:00

Python開發(fā)Web

2023-11-05 12:31:07

Jupyter命令

2020-10-26 10:11:45

Jupyter Not早起Python開發(fā)

2020-07-26 11:55:11

Jupyter Not擴(kuò)展工具開發(fā)

2024-01-03 16:37:26

Jupyter工具開源

2022-07-28 08:33:59

JupyterPython

2019-07-31 15:14:40

Python數(shù)據(jù)科學(xué)可視化

2023-05-24 16:48:47

Jupyter工具技巧

2021-08-12 16:02:22

Jupyter NotPython命令

2021-05-26 10:15:52

開發(fā)技能工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號