OmniXRI-Jack
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
      • Invitee
    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Versions and GitHub Sync Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
Invitee
Publish Note

Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

Your note will be visible on your profile and discoverable by anyone.
Your note is now live.
This note is visible on your profile and discoverable online.
Everyone on the web can find and read all notes of this public team.
See published notes
Unpublish note
Please check the box to agree to the Community Guidelines.
View profile
Engagement control
Commenting
Permission
Disabled Forbidden Owners Signed-in users Everyone
Enable
Permission
  • Forbidden
  • Owners
  • Signed-in users
  • Everyone
Suggest edit
Permission
Disabled Forbidden Owners Signed-in users Everyone
Enable
Permission
  • Forbidden
  • Owners
  • Signed-in users
Emoji Reply
Enable
Import from Dropbox Google Drive Gist Clipboard
   owned this note    owned this note      
Published Linked with GitHub
Subscribed
  • Any changes
    Be notified of any changes
  • Mention me
    Be notified of mention me
  • Unsubscribe
Subscribe
作者:Jack OmniXRI, 2023/7/3 ![](https://hackmd.io/_uploads/SJkhfna_3.jpg) 相信大家最近幾個月都被大型語言模型(Large Language Model,LLM)及人工智慧生成內容(Artificial Intelligence Generated Content, AIGC)給驚豔(驚嚇)到了吧!?好像科幻電影「鋼鐵人」中的虛擬管家「賈維斯(Jarvis)」已經被實現出來了,如果家裡也能有一套,那該有多好啊。目前此類 AI 模型多半都非常巨大,通常只能透過雲端伺服器的強大算力才能運行。為了也能在單機上運行,開始有一些較小規模的模型搭配超強的CPU及GPU也能順利達到交談互動、文章生成等應用。 以往在AI模型部署優化及推論部份,通常都會想到使用 Intel OpenVINO,不過大家多半只注意到它在「電腦視覺」相關的應用,殊不知自從2022.1版後就已開始加入許多「自然語言」的範例。而最近2023.0版又更加強GPU(內顯HD Graphic, Iris,獨顯Arc)處理記憶體動態外形(Dynamic Shape)的能力,使得如生成型預訓練變換模型(Generative Pre-trained Transformer,GPT)這類基於轉換器(Transfomer)技術的大型語言模型能得到更好的實現。 此次很榮幸得到國內外知名工業電腦大廠「研華科技」提供最新的小型工業電腦主機 EPC-B2278 [1](Intel 12代CPU, i7-12700TE)進行測試,其中硬體部份還加入 Mobile PCI Express Module(MXM) 介面的 VEGA-X110 [2],即 Intel 最新獨立顯卡(Arc A370M) ,用來加速AI應用計算。而軟體部份則搭配 Intel OpenVINO 2023.0 來進行LLM模型優化及推論。 為了測試LLM的推論的效能,這裡使用了OpenVINO Notebooks範例中的 GPT-2 文字生成及開源 Dolly 2.0 對話生成進行測試。以下就依序從自然語言對話技術發展歷史、運行系統的硬體規格、軟體開發環境及LLM實驗結果來幫大家介紹一下。 ## 1. 自然語言對話技術發展歷史 1950年電腦科學及人工智慧之父艾倫.圖靈提出了「圖靈測試」的想法,若人類透過打字或語音與遠方機器對話而無法分辨對方是否為機器就算通過測試,可以稱這部機器具有人類的「智慧」。經過許多電腦科學家多年努力,這項技術仍僅存在科幻電影中。直到2011年蘋果公司在iPhone上推出了「SIRI語音助理」,才讓大家對自然語言處理/理解(Natural Language Processing / Understanding,NLP/NLU)有了新的期待。 近十年來各種深度學習模型推陳出新,加上電腦計算速度、能處理的資料集大小及模型參數規模都有了大幅提升,使得NLP/NLU質與量上也隨之快速成長。2018年OpenAI提出一篇名為名為「Improving Language Understanding by Generative Pre-Training」的論文,提及「基於轉換器(Transfomer)的生成式預訓練模型」,從此奠定了GPT在LLM的重要地位。 2022年底OpenAI推出ChatGPT馬上引爆LLM及AIGC相關應用,其主要採用了互動交談來訓練及強化模型,即透過人類反饋的增強式學習(Reinforcement Learning from Human Feedback, RLHF),使得輸出更接近真人的自然語言處理、理解及學習特定領域知識。這項技術除了可以用來聊天、回答各式各樣的問題外,還可自動生成文章、快速摘要長文等功能。而今(2023)年便成為LLM及AIGC發展最迅猛的一年,僅不到半年就推出了數十個相關大型系統軟體,如GPT-4, Bard, LLaMA等,這對想投入AI應用服務的廠商有很大的幫助。 目前 LLM 有兩個較大的問題尚待解決,一是面對這些如此巨大的模型,通常還是得靠雲端大型、高算力設備(如GPU, TPU, NPU等)才能達到迅速回應的能力。二是向雲端發出問題來得到答案,有可能會泄漏個人隱私或公司機密。因此如何在本地端(不上網)使用中階設備就能提供這項服務,就變成大家努力的方向,這也是本文主要介紹的重點。 ![](https://hackmd.io/_uploads/rJkgnaidn.jpg) Fig. 1 自然語言對話技術發展示意圖。(OmniXRI整理製作, 2023/07/03) ## 2. 硬體規格簡介 此次由研華科技提供測試的主機短小精悍,體積不大,卻有超強算力,且功耗比起傳統搭載Nvidia高階顯卡的主機來得低上許多,所以主機內只需小型風扇就足以散熱,如Fig. 2所示。這台主機使用Intel 12代高效能CPU,內建有GPU HD Graphics 770(以下簡稱**iGPU**),另外加上一張MXM介面的Intel Arc370M的獨立顯卡(以下簡稱**dGPU**),可加強在AI推論上的效能。其完整規格如下所示。 **主機:EPC-B2278** [1] * CPU: i7-12700TE * 64bit, 12 Cores, 20 Threads, 1.4G-4.6GHz * iGPU, UHD Graphics 770, 32 EU, eDP 1.4b, DP 1.4a, HDMI 2.1 * Memory: DDR5, 4800MHz, 32GB * Storge: SSD 256GB * I/O: COM x2, USB x4, EtherNet x2, DP++ x2 (註:目前此款機器背板無HDMI接口,需自行使用DP轉換HDMI線材連接,其它同系列機種有不同擴充槽配置) * 尺寸: 250 x 98 x 255 mm * 重量: 5Kg * 變壓器:24V / 9.58A, 230W **獨立顯卡:VEGA-X110** [2] * Mobile PCI Express Module(MXM) * Intel Arc A370M with 8 Xe-Cores (128EU) * 1550MHz base clock * GDDR6 4GB 64bit * 8K DP1.4a x4 ![](https://hackmd.io/_uploads/H1D4fhpOh.jpg) Fig. 2 研華科技EPC-B2278主機及VEGA-X110獨立顯卡示意圖。(OmniXRI整理製作, 2023/07/03) ## 3. 軟體開發環境安裝及測試 此次使用的主機出廠時並無安裝作業系統,初步測試可以安裝 Ubuntu 22.04 LTS (Linux) 及 Microsoft Windows 11。為了讓OpenVINO 2023.0版能更順利運行及對獨立顯卡AI加速計算的支援,所以選用了Win 11作為主要作業系統。 基於後續測試方便,這裡採用了 Intel OpenVINO 2023.0版提供的 Notebooks [3] 的範例,即 Jupyter Notebook (Python) 開發及測試環境。主要使用了以下兩組範例,更完整說明詳見第4及5小節。 * 223-text-prediction.ipynb [4] * 240-dolly-2-instruction-following.ipynb [5] 使用前可參考[6]進行安裝 Python, Git 及 C++ Redistributable。接下來運行「cmd」進入命令列模式,執行下列命令創建Python虛擬環境。 ```shell= python -m venv openvino_env ``` 接著就可以執行下列命令啟動虛擬環境,啟動後命令例提示字元會變成(openvino_env)X:\Users\XXX,表示已進入虛擬環境。 ```shell= openvino_env\Scripts\activate ``` 若想離開虛擬環境,則可執行下列命令。 ```shell= deactivate ``` 如果你的系統上已有安裝其它版本的 OpenVINO ,則建議再新建一個虛擬環境以免相互干擾。 再來就可複製及安裝 OpenVINO Notebooks 及相關套件包,完成後就可以啟動 Jupyter Notebook 環境了。 ```shell= openvino_env\Scripts\activate git clone --depth=1 https://github.com/openvinotoolkit/openvino_notebooks.git cd openvino_notebooks python -m pip install --upgrade pip wheel setuptools pip install -r requirements.txt jupyter lab notebooks ``` 啟動後會自動開啟網頁瀏覽器,並顯示所有的範例程式。此時命令列視窗會出現很多工作訊息,請勿關閉這個視窗。待需要結束工作時,關閉瀏覽器視窗後再關閉此命令列視窗,或按 Ctrl+C 回到命令列提示字元。下次再次啟動命令列視窗時,只需執行下列命令就能進入 Jupyter Notebook 工作環境了。 ```shell= openvino_env/Scripts/activate cd openvino_notebooks jupyter lab notebooks ``` ## 4. 大型語言模型GPT-2文字預測及生成結果 Intel OpenVINO Notebooks 在2022.1版時就有開始提供 GPT-2的文字生成範例 「223-gpt2-text-prediction」,2022.3版又將這個範例擴展,加入GPT-Neo文字生成及PersonaGPT對話生成,變成 「223-text-prediction」。此次實驗用的是2023.0版「223-text-prediction」[4],這個範例和2022.3版略有些許不同。同時2023.0版也開始提供 Google Colab範例[7],讓不想在自己電腦安裝OpenVINO的朋友可以嚐試一下這個LLM的應用。 以下實驗會使用第3節介紹的方式在本地端(不上網單機)上運行範例,方便計算相關實驗數據。使用時很簡單,如Fig. 3所示,選定欲執行的範例檔案夾,進入後以滑鼠雙擊想執行的檔案(*.ipynb)即可載入,接著點擊主選單上的「Kernel」下的「Restart Kernel and Run All Cells...」,就可一口氣跑完範例程式。 ![](https://hackmd.io/_uploads/rJ0kBUTOn.jpg) Fig. 3 Intel OpenVINO Notebooks範例執行程序示意圖。(OmniXRI整理製作,2023/07/03) 在這個範例中,都是使用HuggingFace Transformers預訓練好的模型,目前只支援英文,共有下列三種。 * GPT-2 * GPT-Neo * PersonaGPT 前兩項主要為文章生成(或稱文字預測),第三項主要用於對答(聊天)。接下就分別說明個別的測試結果。 ### 4.1 PersonaGPT測試結果 如果直接選擇運行全部,預設會選擇第三項 PersonaGPT,運行前會先將HuggingFace的模型先轉成ONNX格式,接著再轉換成OpenVINO IR格式(*.xml + *.bin)來進行推論。運行前還可依需求選擇不同的硬體(如CPU, iGPU, dGPU)以得到不同的效能。這個範例最後一個步驟預設了四個問題,重覆發問,共問十次。實驗後會發現每次執行最後一個步驟問同樣的問題,確實會產生不同的答案,如Fig. 4所示。如果想要測試一下自己的問題,可以把最後一格的程式中的 pre_written_prompts 變數內容修改一下即可。不過仔細看了一下答案,有時答的還可以,但有時也會答非所問,或許未來這個模型還會再加強吧! ![](https://hackmd.io/_uploads/ryN97uTd2.jpg) Fig. 4 PersonaGPT生成設定及問答結果。(OmniXRI整理製作,2023/07/03) 為了比較不同的硬體下運行PersonaGPT的效率,使用了研華提供的硬體和筆者筆電進行運行比較,結果詳如Fig. 5。其中「Total」表示全部運行完所需時間,而「Inference」則只運行最後一個步驟的十次問答。結果出來,乍一看研華的iGPU和dGPU怎麼比CPU跑得還慢,但仔細確認後發覺使用CPU運行最後一個步驟時,所有算力幾乎被吃光佔了93%,而單獨使用iGPU時只用到57%,而只使用dGPU才用到19%,猜想OpenVINO在配置計算資源可能沒有用到最大值,可能還有改善空間,或者還有隱藏版的設定,有待大家一起來研究。 ![](https://hackmd.io/_uploads/HkVyE5adn.jpg) Fig. 5 不同硬體運行PersonaGPT生成效能比較表。(OmniXRI整理製作,2023/07/03) 另外也有使用Google Colab來跑一下這個範例,結果竟然得到Total 491.2ms, Inference 116.4ms的超長推論時間結果,猜想可能是只能使用到 Intel Xeon CPU 單核心運行導致吧? ### 4.2 GPT-2 & GPT-Neo測試結果 目前這個範例若想使用 GPT-2 或 GPT-Neo 來生成一小段文章時,首先修改「value='GPT-2'」或「value='GPT-Neo'」,接著選擇想要推論的裝置(CPU, GPU, GPU.1)。再來點擊「Inference with GPT-Neo/GPT-2」那格程式,修改「text = '欲產生文章的一小段提示文字(目前只支援英文)'」。最後點擊主選單「Kernel」下的「Restart Kernel and Run up to Selected Cell...」使其程式重啟運行至目前格子,即可產生一段文章。如果不滿意,可以單獨運行這格就能得到新產生的內容。完整結果可參考Fig. 6所示。 ![](https://hackmd.io/_uploads/BkcD2t6Oh.jpg) Fig. 6 GPT-2或GPT-Neo文章生成結果示意圖。(OmniXRI整理製作,2023/07/03) ## 5. 大型語言模型Dolly 2.0離線對話測試結果 目前LLM雖有不少開源項目,但OpenVINO目前官方僅提供了Dolly 2.0的範例,這是一個開源的項目,由Databricks提供,其主要訓練資料集是由自家的員工建立的15,000條高品質問答產生的,所以大家可以放心使用,不管是否從事商業用途,更完整的介紹可參考官方的說明[8]。 由於這個模型所需使用到的記憶體比較多,且只支援OpenVINO 2023.0版及較新的CPU, iGPU, dGPU,所以在筆者的筆電(Core i7-9750H)上就無法順利運行。 想要運行這個範例,非常簡單,只需開啟 Notebooks 240-dolly-2-instruction-following 路徑下的 240-dolly-2-instruction-following.ipynb,再點選主選單上的「Kernel」下的「Restart Kernel and Run All Cells」,就可順利運行起來。 這個範例有使用gradio套件,它是用來在Jupyter Notebook Python環境下產生圖形化使用者介面(GUI)的工具,所以當執行到最後一步驟時,除了Jupyter Notebook上會產生GUI外,另外可使用網頁瀏覽器連線到「127.0.0.1:7860」,亦會得到一樣的操作畫面,如Fig. 7所示。 操作時只需在「User Instruction」欄位輸入待回答的問題,或者直接從下方「Examples」選擇一個測試用問題,再點選「Submit」提交推論計算,稍待一會兒,「Model response」區就會慢慢逐字產生合理答案。同樣地,相同的問題每次發問後會得到不一樣的結果。在產生答案的同時,系統也會計算產生的速度(單位為 Tokens/Second),CPU大約可得到4.0到4.4,而iGPU則只能得到3.2到3.8左右,而dGPU有些時候會產生運行錯誤導致程式需要重新啟動運行。另外在切換裝置時,由於 OpenVINO 需重新編譯對應的格式,所以可能需等待1到3分鐘後才能再發問。 ![](https://hackmd.io/_uploads/rJ0BjcaOn.jpg) Fig. 7 OpenVINO運行Dolly 2.0範例後網頁使用者介面示意圖。(OmniXRI整理製作,2023/07/03) 初步觀察後這個範例亦有發現iGPU的效能略優於dGPU的狀況,猜想可能獨立顯卡的重點都放在3D顯示效能的優化,而對於OpenVINO的AI加速計算上支援還有些不足。另外目前iGPU和CPU共享記憶體,32GB遠大於dGPU的4GB,所以也有可能造成效能差異,或許不久的將來就能得到改善。 ## 小結 初步體驗後,徹底改變了傳統的刻板印象,原來不是只有雲端大機器才能跑得的動LLM及AIGC,在中小型工業電腦上一樣可以達到滿意的推論水準。目前 OpenVINO 在 CPU 及 iGPU 上推論的表現已有不錯的整合,相信未來在 dGPU 更強大的算力加持及 OpenVINO持續優化下會有更棒的表現,那麼更複雜、多工的邊緣智能應用就更容易實現了。 ## 參考文獻 [1] 研華科技,嵌入式電腦,EPC-B2278 (Intel® 12th Gen Core™ i processor) https://www.advantech.com/zh-tw/products/f3245050-a6a2-4a97-a6b1-551f82f72305/epc-b2278/mod_87e56b88-4062-4256-ad2d-8c015f21adf7 [2] 研華科技,邊緣智能解決方案,VEGA-X110 (Intel Arc A370M Embedded GPU) https://www.advantech.com/zh-tw/products/3d060f1e-e73e-460d-b38c-c69f76312c91/vega-x110/mod_678bd5c3-d349-47fc-92f4-033d8e9a00cb [3] Intel openvinotoolkit github - openvino_notebooks https://github.com/openvinotoolkit/openvino_notebooks [4] Intel openvinotoolkit github - openvino_notebooks/notebooks/223-text-prediction https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/223-text-prediction [5] Intel openvinotoolkit github - openvino_notebooks/notebooks/240-dolly-2-instruction-following https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/240-dolly-2-instruction-following [6] Intel openvinotoolkit github - openvino_notebooks windows install https://github.com/openvinotoolkit/openvino_notebooks/wiki/Windows [7] Intel openvinotoolkit github - 223-text-prediction Google Colab Example https://colab.research.google.com/github/openvinotoolkit/openvino_notebooks/blob/main/notebooks/223-text-prediction/223-text-prediction.ipynb [8] Databricks, Free Dolly: Introducing the World's First Truly Open Instruction-Tuned LLM https://www.databricks.com/blog/2023/04/12/dolly-first-open-commercially-viable-instruction-tuned-llm ## 延伸閱讀 [A] 許哲豪,Intel OpenVINO 2023.0初體驗─如何快速在Google Colab運行人臉偵測 https://omnixri.blogspot.com/2023/06/vmaker-edge-ai-06-intel-openvino.html [B] 楊亦誠,利用OpenVINO部署HuggingFace預訓練模型的方法與技巧 https://makerpro.cc/2023/06/how-to-use-openvino-deploy-pre-trained-model-huggingface/ **本文同步發表在[【MakerPRO】](https://makerpro.cc)** --- OmniXRI 整理製作,歡迎點贊、收藏、訂閱、留言、分享 ###### tags: `OpenVINO` `Edge AI`

Import from clipboard

Paste your markdown or webpage here...

Advanced permission required

Your current role can only read. Ask the system administrator to acquire write and comment permission.

This team is disabled

Sorry, this team is disabled. You can't edit this note.

This note is locked

Sorry, only owner can edit this note.

Reach the limit

Sorry, you've reached the max length this note can be.
Please reduce the content or divide it to more notes, thank you!

Import from Gist

Import from Snippet

or

Export to Snippet

Are you sure?

Do you really want to delete this note?
All users will lose their connection.

Create a note from template

Create a note from template

Oops...
This template has been removed or transferred.
Upgrade
All
  • All
  • Team
No template.

Create a template

Upgrade

Delete template

Do you really want to delete this template?
Turn this template into a regular note and keep its content, versions, and comments.

This page need refresh

You have an incompatible client version.
Refresh to update.
New version available!
See releases notes here
Refresh to enjoy new features.
Your user state has changed.
Refresh to load new user state.

Sign in

Forgot password

or

By clicking below, you agree to our terms of service.

Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
Wallet ( )
Connect another wallet

New to HackMD? Sign up

Help

  • English
  • 中文
  • Français
  • Deutsch
  • 日本語
  • Español
  • Català
  • Ελληνικά
  • Português
  • italiano
  • Türkçe
  • Русский
  • Nederlands
  • hrvatski jezik
  • język polski
  • Українська
  • हिन्दी
  • svenska
  • Esperanto
  • dansk

Documents

Help & Tutorial

How to use Book mode

Slide Example

API Docs

Edit in VSCode

Install browser extension

Contacts

Feedback

Discord

Send us email

Resources

Releases

Pricing

Blog

Policy

Terms

Privacy

Cheatsheet

Syntax Example Reference
# Header Header 基本排版
- Unordered List
  • Unordered List
1. Ordered List
  1. Ordered List
- [ ] Todo List
  • Todo List
> Blockquote
Blockquote
**Bold font** Bold font
*Italics font* Italics font
~~Strikethrough~~ Strikethrough
19^th^ 19th
H~2~O H2O
++Inserted text++ Inserted text
==Marked text== Marked text
[link text](https:// "title") Link
![image alt](https:// "title") Image
`Code` Code 在筆記中貼入程式碼
```javascript
var i = 0;
```
var i = 0;
:smile: :smile: Emoji list
{%youtube youtube_id %} Externals
$L^aT_eX$ LaTeX
:::info
This is a alert area.
:::

This is a alert area.

Versions and GitHub Sync
Get Full History Access

  • Edit version name
  • Delete

revision author avatar     named on  

More Less

Note content is identical to the latest version.
Compare
    Choose a version
    No search result
    Version not found
Sign in to link this note to GitHub
Learn more
This note is not linked with GitHub
 

Feedback

Submission failed, please try again

Thanks for your support.

On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

Please give us some advice and help us improve HackMD.

 

Thanks for your feedback

Remove version name

Do you want to remove this version name and description?

Transfer ownership

Transfer to
    Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

      Link with GitHub

      Please authorize HackMD on GitHub
      • Please sign in to GitHub and install the HackMD app on your GitHub repo.
      • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
      Learn more  Sign in to GitHub

      Push the note to GitHub Push to GitHub Pull a file from GitHub

        Authorize again
       

      Choose which file to push to

      Select repo
      Refresh Authorize more repos
      Select branch
      Select file
      Select branch
      Choose version(s) to push
      • Save a new version and push
      • Choose from existing versions
      Include title and tags
      Available push count

      Pull from GitHub

       
      File from GitHub
      File from HackMD

      GitHub Link Settings

      File linked

      Linked by
      File path
      Last synced branch
      Available push count

      Danger Zone

      Unlink
      You will no longer receive notification when GitHub file changes after unlink.

      Syncing

      Push failed

      Push successfully