不到1000行代碼,GitHub 1400星,天才黑客開源深度學習框架tinygrad

Python實戰社羣

Java實戰社羣

長按識別下方二維碼,按需求添加

掃碼關注添加客服

進Python社羣▲

掃碼關注添加客服

進Java社羣

機器之心報道

機器之心編輯部

最近,天才黑客 George Hotz 開源了一個小型深度學習框架 tinygrad,兼具 PyTorch 和 micrograd 的功能。tinygrad 的代碼數量不到 1000 行,目前該項目獲得了 GitHub 1400 星。

在深度學習時代,谷歌、Facebook、百度等科技巨頭開源了多款框架來幫助開發者更輕鬆地學習、構建和訓練不同類型的神經網絡。而這些大公司也花費了很大的精力來維護 TensorFlow、PyTorch 這樣龐大的深度學習框架。

除了這類主流框架之外,開發者們也會開源一些小而精的框架或者庫。比如今年 4 月份,特斯拉人工智能部門主管 Andrej Karpathy 開源了其編寫的微型 autograd 引擎 micrograd,該引擎還用 50 行代碼實現了一個類 PyTorch api 的神經網絡庫。目前,micrograd 項目的 GitHub star 量達到 1200 星。

不久前,天才黑客 George Hotz(喬治 · 霍茲)開源了一個小型 Autograd Tensor 庫 tinygrad,它介於 PyTorch 和 micrograd 之間,能夠滿足做深度學習的大部分要求。上線不到一個月,該項目在 GitHub 上已經獲得 1400 星。

項目地址:https://github.com/geohot/tinygrad

根據 GitHub 內容,下文對 tinygrad 的安裝與使用做了簡要介紹。感興趣的同學也可通過 George Hotz 的 YouTube 視頻進行學習。

視頻地址:https://www.youtube.com/channel/UCwgKmJM4ZJQRJ-U5NjvR2dg

tinygrad 的安裝與使用

「tinygrad 可能不是最好的深度學習框架,但它確實是深度學習框架。」

George 在項目中保證,tinygrad 代碼量會永遠小於 1000 行。

安裝

tinygrad 的安裝過程非常簡單,只需使用以下命令:

pip3 install tinygrad --upgrade

示例

安裝好 tinygrad 之後,就可以進行示例運行,代碼如下:

from tinygrad.tensor import Tensor
x = Tensor.eye(3)
y = Tensor([[2.0,0,-2.0]])
z = y.matmul(x).sum()
z.backward()
print(x.grad)  # dz/dx
print(y.grad)  # dz/dy

使用 torch 的代碼如下:

import torch
x = torch.eye(3, requires_grad=True)
y = torch.tensor([[2.0,0,-2.0]], requires_grad=True)
z = y.matmul(x).sum()
z.backward()
print(x.grad)  # dz/dx
print(y.grad)  # dz/dy

滿足對神經網絡的需求

一個不錯的 autograd 張量庫可以滿足你對神經網絡 90%的需求。從 tinygrad.optim 添加優化器(SGD、RMSprop、Adam),再編寫一些 minibatching 樣板代碼,就可以實現你的需求。

示例如下:

from tinygrad.tensor import Tensor
import tinygrad.optim as optim
from tinygrad.utils import layer_init_uniform


class TinyBobNet:
  def __init__(self):
    self.l1 = Tensor(layer_init_uniform(784, 128))
    self.l2 = Tensor(layer_init_uniform(128, 10))


  def forward(self, x):
    return x.dot(self.l1).relu().dot(self.l2).logsoftmax()


model = TinyBobNet()
optim = optim.SGD([model.l1, model.l2], lr=0.001)


# ... and complete like pytorch, with (x,y) data


out = model.forward(x)
loss = out.mul(y).mean()
loss.backward()
optim.step()

支持 GPU

tinygrad 通過 PyOpenCL 支持 GPU。但後向傳播暫時無法支持所有 ops。

from tinygrad.tensor import Tensor
(Tensor.ones(4,4).cuda() + Tensor.ones(4,4).cuda()).cpu()

ImageNet 推斷

「麻雀雖小,五臟俱全。」tinygrad 還能夠支持 full EfficientNet,輸入一張圖像,即可得到其類別。

ipython3 examples/efficientnet.py https://upload.wikimedia.org/wikipedia/commons/4/41/Chicken.jpg

如果你安裝了 webcam 和 cv2,則可以使用以下代碼:

ipython3 examples/efficientnet.py webcam

注意:如果你想加速運行,設置 GPU=1。

測試

運行以下代碼可執行測試:

python -m pytest

此外,喬治 · 霍茲還計劃添加語言模型、檢測模型,進一步減少代碼量、提升速度等。

天才黑客喬治 · 霍茲

該項目的創建者是著名黑客喬治 · 霍茲,別號 Geohot。

他於 1989 年出生在美國新澤西州,曾就讀於羅切斯特理工學院生物工程專業和卡內基梅隆大學計算機科學系。

然而,喬治 · 霍茲在自己的 LinkedIn 主頁上教育經歷描述裏是這麼寫的:

在羅切斯特理工學院就讀期間,他的社團活動是「在宿舍黑 iPhone」…… 

這是他著名的黑客經歷之一。2007 年,17 歲的喬治 · 霍茲成功破解 iPhone 手機,使手機不再侷限於 AT&T 網絡,而是支持其他 GSM 網絡。2009 年,他開發出一款針對 iOS 3.1.2 的越獄軟件 blackra1n。2010 年,喬治 · 霍茲宣佈不再進行越獄軟件的開發。

然而,他的黑客行動並未停止。

2009 年起,喬治 · 霍茲開始破解 PlayStation 3(PS3)。2010 年初,他宣佈得到了 PS3 系統內存的讀寫權限和處理器的高級控制權。2011 年 3 月,喬治 · 霍茲被索尼起訴,後和解。

此外,喬治 · 霍茲還破解過三星手機等產品。

就工作經歷而言,他曾在谷歌、Facebook、SpaceX 工作過。目前,他在自己創立的自動駕駛公司 comma.ai 任職。

2015 年,喬治 · 霍茲創立了人工智能創業公司 comma.ai,旨在基於機器學習算法構建自動駕駛技術。喬治 · 霍茲開發出自動駕駛套件 Comma One,只需 1000 美元,用戶就能將傳統汽車升級成自動駕駛版本。不過,後來這一計劃被取消。

2020 年,在 CES 大會上,comma.ai 展出了其最新產品——輔助駕駛設備 Comma Two,售價 999 美元。

comma.ai 公司還開源了輔助駕駛系統 openpilot,參見:https://github.com/commaai/openpilot。

參考鏈接:https://zh.wikipedia.org/wiki/%E4%B9%94%E6%B2%BB%C2%B7%E9%9C%8D%E5%85%B9

https://en.m.wikipedia.org/wiki/George_Hotz

程序員專欄 掃碼關注填加客服 長按識別下方二維碼進羣

近期精彩內容推薦:  

 看電影前一定要檢查一下域名是不是HTTPS的

 有個大神級女朋友是什麼體驗

 世界上五個最不務正業的科學家!

 魂鬥羅只有128KB爲何可以實現那麼長的劇情


在看點這裏好文分享給更多人↓↓

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章