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

2020-12-01 網易新聞

  22點24分準時推送,第一時間送達

  

編輯:技術君 | 來源:機器之心

  上一篇:

  正文

  

最近,天才黑客 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 Tensorx = Tensor.eye(3)y = Tensor([[2.0,0,-2.0]])z = y.matmul(x).sum()z.backward()print(x.grad) # dz/dxprint(y.grad) # dz/dy

  使用 torch 的代碼如下:

  import torchx = 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/dxprint(y.grad) # dz/dy

  滿足對神經網絡的需求

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

  示例如下:

  from tinygrad.tensor import Tensorimport tinygrad.optim as optimfrom 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

  你在看嗎?一起成長

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺「網易號」用戶上傳並發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關焦點

  • GitHub 1400星,天才黑客開源深度學習框架tinygrad
    最近,天才黑客 George Hotz 開源了一個小型深度學習框架 tinygrad,兼具 PyTorch 和 micrograd 的功能。tinygrad 的代碼數量不到 1000 行,目前該項目獲得了 GitHub 1400 星。 在深度學習時代,谷歌、Facebook、百度等科技巨頭開源了多款框架來幫助開發者更輕鬆地學習、構建和訓練不同類型的神經網絡。
  • 深度學習框架的前世今生
    開源框架github排名
  • GitHub 標星 20000+,國產 AI 開源從算法開始突破
    SenseParrots 是否有開源的計劃呢? 林達華:商湯有底層的超算平臺,有自主研發的深度學習框架,也有上層的各種算法和應用平臺,這些是商湯自主研發和原創積累下來的技術體系。為了響應國家的號召和社會的期待,各個 AI 企業都開始有自己的開源戰略,商湯也有自己的思考,我們理解開源的一個最重要的目的就是要能夠為科研和產業服務的開放技術生態。 開源切入點的選擇非常關鍵。現在在深度學習框架領域,雖然已經有了不少開源框架,但是目前被廣泛應用的主要就是 PyTorch 和 TensorFlow,而且已經形成了非常巨大的生態。
  • 2018 年度新增開源軟體排行榜之國產 TOP 50
    榜單根據 2018 年開源中國社區新收錄的開源項目的關注度、活躍度,以及所屬分類整理而來,相信在一定程度上反映了國內大部分開發者在 2018 年所使用的技術棧和希望學習的技術。可以看到,Java 相關框架一如既往地佔據了榜單的很大一部分,而隨著 AI 技術在近兩年的興起,也誕生了更多的人工智慧開源項目。
  • 2020年深度學習發展大盤點及對2021年深度學習的未來展望|極客雲算
    深度學習框架作為AI底層工具,對個人而言是進入深度學習世界的一把鑰匙,掌握深度學習框架並不等於理解了深度學習,要在AI開發中有所作為,關鍵還是要真正理解框架背後的技術、實踐和生態。隨著近年來的人工智慧發展,2020年深度學習依然是發展最快的領域之一,直奔未來工作。其發展是多方面的,而且是多方位的。
  • 百度開源2020:二十個技術領域持續開源 飛槳、阿波羅成行業領先者...
    二、飛槳(PaddlePaddle)、Apollo已快速成長為行業領先者  1、飛槳(PaddlePaddle)  飛槳(PaddlePaddle)以百度多年的深度學習技術研究和業務應用為基礎,是中國首個自主研發、功能完備、開源開放的產業級深度學習平臺,集深度學習核心訓練和推理框架、基礎模型庫
  • 「每日github」B站開源的播放器、markdown插件等
    3,tastejs / todomvc這個是使用各種前端框架實現的todo代辦事項的示例程序。目的是為了幫助新手快速入門一項新的前端框架。目前的demo實現的已經相當多了:4,不說了5,Bilibili / ijkplayerijkplayer是b站開源的超級好用的視頻播放器喔,相信大家都早有耳聞。
  • 細數二十一世紀以來深度學習框架的發展歷程
    在本文中,Waymo 軟體工程師 Lin Yuan 細數了二十一世紀以來深度學習框架的發展歷程,並劃分為了石器、青銅、鐵器、羅馬和工業化時代。  過去十年,機器學習(尤其是深度學習)領域湧現了大量算法和應用。在這些深度學習算法和應用湧現的背後,是各種各樣的深度學習工具和框架。
  • 程式設計師去網吧寫代碼,被當黑客,網管報警
    最近在百度貼吧上看到一個帖子:今天實驗室停電,我們五個去網吧寫程序被網關當成黑客報警了。想一想,在網吧有見過看新聞聯播的人;有寫作業的人;有看高數教學視頻的人,從來沒看過在網吧寫代碼的人。想一想別人在網吧,五個人一排五黑玩遊戲,他們在網吧一排五黑寫代碼,那個畫面是誰都會好奇地圍過來吧。在外人看來程式設計師是很神奇的,他們敲敲鍵盤就能改變許多東西,他們感覺程式設計師就是黑客。然後這五個人就真的被當成黑客了,網管報警了。
  • 我國最小黑客,8歲寫代碼,1元買2500元商品,如今他怎樣了?
    我們總是會無比羨慕那些天才少年,尤其在上學期間,大多數人需要學習很久的知識,在他們看來總是很輕鬆就完成了。大家有時總會幻想自己要是天才就好了,可能學習就不必這麼辛苦了。但其實作為天才更需要後天的不斷努力充實,要不然只會上演傷仲永的悲劇,白白浪費了天縱之才。我們今天所要介紹的這位小天才,還曾因被稱作「中國年齡最小的黑客」而出名。
  • 愛奇藝開源輕量級插件化方案 Neptune
    愛奇藝近日開源了其輕量級插件化方案 Neptune,項目地址:https://github.com/iqiyi/Neptune插件化框架可以在主程序不重新安裝的情況下,針對單個業務模塊進行動態加載達到模塊更新的目的
  • 國產開源軟體「有償刷星」遭熱議,GitHub背後的「刷星」產業仍在...
    一位開發者在收到活動私信後,曝光了這一行為並指責其違背開源精神。隨後該事件不斷發酵,招致眾多開發者瘋狂吐槽,該平臺最後不得不取消了該活動。不難想像,「有償刷星」活動引起開發者們的如此反感,因為此前早有先例。早在2019年8月,韓國最大的無線通信提供商 SK Telecom就搞了一場類似的營銷活動——為開源項目點擊Star,截圖可免費獲得商品禮券。
  • 開源| CVPR2020|PQ-NET通過順序部件裝配方式表達和生成三維物體
    每日分享CVPR、ECCV等會議,關注深度學習、自動駕駛領域,我們期待你的加入。關注「CNNer」,選擇加「星標」或「置頂」精選乾貨,當日達。論文地址:http://arxiv.org/pdf/1911.10949v2.pdf代碼:https://github.com/chriswu1997/pq-net來源: 北京大學前沿計算研究中心論文名稱:PQ-NET: A Generative Part Seq2Seq Network for 3D Shapes原文作者:Rundi Wu本文提出了 PQ-NET深度神經網絡
  • Github超10000星:100天從Python新手到大師
    新智元報導 來源:Github編輯:元子【新智元導讀】北京千鋒互聯科技有限公司成都分公司駱昊(jackfrued)在Github上發布了一個Python學習秘笈,從萌新到王者的100天Python學習之旅。簡單的說,Python是一個「優雅」、「明確」、「簡單」的程式語言。
  • 核心功能全部開源,雖霸榜GitHub,但怎麼賺錢?|陶建輝
    由於盜版,付費和服務的意識還未養成,中國市場基礎軟體的銷售只佔全球5%都不到,我們不能無視海外巨大的市場。而且基礎軟體屬於典型的技術產品,使用是沒有國界地域之分的。同時,對於作業系統、資料庫這些軟體,只有全球前三名才可能生存。因此濤思數據從成立之日起,就決心瞄準全球市場。 而進軍海外市場,市場推廣更加困難,普通的開發者會對來自中國的基礎軟體有很多質疑和不信任。
  • 別與自己的代碼「墜入愛河」
    一些組織和一些人會深深的愛上自己的代碼。他或他們幻想整個公司都使用自家開發的框架,要成為一個偉大的英雄,或許在準備文檔的過程中就添加使用它的方法和步驟,以便其他開發者可以將其導入到他們的項目中。
  • 國產信息基礎軟硬體行業深度報告:開源、遷移、上雲、生態
    龍芯電腦端(PC/伺服器)CPU 經歷了三個發展階段:不可用——可用——好用 1)早期階段(2015 年之前):性能較低,達不到「可用」程度:龍芯第一代 3A1000/3B1500 的單 核性能較低,SPEC CPU 2006 分值只有 2-3 分,打開 20M 的測試文檔需要 33 秒。
  • 谷歌開源RL智能體Dreamer,僅靠圖像學習從機器人到Atari控制策略
    在過去,學得精確的模型並利用它們學習成功的行為比較具有挑戰性。但近來的一些研究,如谷歌提出的深度規劃網絡(Deep Planning Network,PlaNet),通過從圖像中學習精確的模型推動了該領域的進展。但還需注意,基於模型的方法依然受到無效或計算代價高昂的規劃機制掣肘,限制了它們解決複雜任務的能力。
  • 量子算命,在線擲筊:一個IBM量子云計算機的應用實踐,代碼都有了
    在第一個項目中,他以「擲筊」為例,為大家從方法假設到代碼實現一一解釋。擲筊是一種道教與民間信仰中問卜的儀式;又稱擲筶、擲杯、博杯,普遍流傳於華人民間傳統社會。「筊杯」是一種佔卜工具,是世俗之人所用以與神明指示的工具。下列是陽陰組合的說明:(1)一陽一陰(一平一凸):稱之為「聖筊」、「允筊」(筊或作「杯」)表示神明允許、同意,或行事會順利。