[遊戲天國] 隻狼:暗影雙死 也破關了

終於把隻狼打通關了,黑血狼剩下 「[血緣詛咒」 ,其他都在 Steam Deck 全破。 (可惡索尼獨佔)。

尾王一心比較麻煩就是第一階段,二三階段就乖乖用傘反擊慢慢耗,只識破槍的突刺。「猶豫,就會敗北」

image-20231228095033018image-20231228095035287

比較難的關卡

image-20231228095112511

雙義父打完,其實三年前的比在天守閣的弱一點,天守閣因為我不能卡牆,天守閣放毒倒是比較困擾。 不過慢慢防守用不死斬總算也是打完了 。

經過 「P的謊言」後,隻狼變簡單了

經過 「P的謊言」我的隻狼有變強很多。(明明才剛開始。

不過用 SD 好討厭啊~都不好錄影。為了截圖還差點忘記砍最後一刀,差點就搞笑了。討伐次數大概是五次,不過我有看攻略。

image-20231228095232039

打完 P 的謊言再來打隻狼~會很好過誒

之前在 PS5 卡太久,一直沒時間打。 結果打完 P 的謊言練習很久的阻擋之後。 就很順利的過了 O_0 ? 看來之前全破魂系列都是閃躲王~~

[Kubernetes] 關於 Kubernetes

Kubernetes Secrets Management

前提:

最近在聊天的時候討論到,究竟在 Kubernetes 內管控一些帳號與密碼的時候,我們都知道要使用 Kubernetes Secret 而不要使用 Environment Variables 。 但是在安全性上究竟有哪些差異,我決定查一些書上面的整理:

參考書籍內容

**Kubernetes Security** Liz Rice, Michael Hausenblas

image-20231203204027780

You can pass environment variables into containers at runtime. This means you can take the container image (code) and configure it according to the scenario it is running in. In Kubernetes, “ordinary” environment variables can be specified directly in the pod YAML or via a ConfigMap. But be careful: including secret values in YAML files that you check into code control means those secrets are accessible to the same people who can see the source code.

To mitigate this, Kubernetes also supports the secret resource, which can be passed into a pod as an environment variable. Your pod spec or ConfigMap YAML refers to the secret resource by name rather than directly to the secret value, so that it’s safe to put that YAML under code control.

Kubernetes 1.7 之後的版本,可以加上 node authorization 確保未經授權的 kubelet 來存取機密資訊。

Kubernetes Secrets Management By Andrew Block, Alex Soto

Kubernetes Secrets Management

2 An introduction to Kubernetes and Secrets

image-20231203212545186

As discussed in chapter 1, one of the big differences between Secrets and ConfigMaps is how data is stored inside etcd. Secrets store data in Base64 format; ConfigMaps store data in plain text.

2.4.2 Secrets are mounted in a temporary file system

A Secret is only sent to a Node if there is a Pod that requires it. But what’s important is that a Secret, even though it is mounted as a volume, is never written to disk but in-memory using the tmpfs file system. tmpfs stands for temporal filesystem, and as its name suggests, it is a file system, where data is stored in volatile memory instead of persistent storage. When the Pod containing the Secret is deleted, the kubelet is responsible for deleting it from memory as well.

危險程度 / Hacking 方式

Environment Variables /

export
 
declare -x GREETING_MESSAGE="Hello Anna"     ①
declare -x HOME="/"
declare -x HOSTid="greeting-demo-deployment-5664ffb8c6-2pstn"
...

Secret 放在暫存檔案

mount | grep tmpfs
 
tmpfs on /dev type tmpfs (rw,nosuid,size=65536k,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,relatime,mode=755)
tmpfs on /etc/sec type tmpfs (ro,relatime) /   ①
...
 
ls /etc/sec                                    ②
 
greeting.message
 
cat /etc/sec/greeting.message                  ③
 
Hello Anna

利用外部的結構

img

Summary

  • Kubernetes 叢集由主節點和可選的工作節點組成。
  • 任何 Kubernetes 資源和叢集的目前狀態都儲存在etcd 實例中。
  • 我們討論了將應用程式部署到 Kubernetes。
  • 我們介紹了使用 ConfigMaps 在外部配置應用程序,無論是作為環境變數還是作為文件。
  • Secrets 在建構和使用上與 ConfigMap 沒有太大不同。

要加強 configMap 可以參考這一篇

使用 Kubernetes ConfigMap 進行正確的秘密管理

[Heroku] 如何把 Local Python Docker Services 轉換到 Heroku 上面

前提:

同事喬治日報上面推薦的 https://github.com/assafelovic/gpt-researcher 真的很好用,搭配 https://app.tavily.com/home 超讚

來問問 Sam Altman 最近到底發生什麼事情,懶人包馬上出來。 不太好本地端部署,為了部署在 Heroku 稍微修改一些部署端的設定。

image-20231122172208738

image-20231122172211045

實作

分享一下關於部署需要注意的,跟如何如何更改部署流程在雲端的 FaaS 服務上。

TL;DR 直接按下去部署 Heroic

https://github.com/kkdai/gpt-researcher

image-20231122194904129

本地端部署起來

其實真的要部署起來,沒有那麼簡單。首先 local 要克服相關的 python 版本的問題。像是 Python 版本需要 3.11 以上。

PYENV 控制版本

透過 pyenv 控制 python 版本真的很方便,很多時候 LLM 大多使用 python 3.9 。但是有一些人會使用 3.10 甚至是 3.11

  • pyenv versions:可以列出已經安裝在本地端的所有版本。 可以透過 pyenv install 3.11.6 來安裝版本。
  • pyenv local 3.xx.xx: 本地端,這個 shell session 切換版本。
  • pyenv global 3.xx.xx: 讓系統預設版本變換。

部署到 Heroku

由於這個專案,有提供 Dockerfile 其實要本地端部署還是簡單一點。如果希望可以讓更多人使用,可以試試看放在 Heroku 上面。以下分享幾個需要修改的地方。

關於浮動 port

有使用 Cloud Platform 的人都知道,雲端上面 FaaS (Function As A Services) 無法讓你任意選擇開啟的 PORT 。通常會使用 $PORT 帶下去啟動。 關於這部分,可能要檢查一些地方:

Dockerfile 套用 $PORT

原有版本在 https://github.com/assafelovic/gpt-researcher/blob/master/Dockerfile

FROM python:3.11.4-slim-bullseye as install-browser

RUN apt-get update \
    && apt-get satisfy -y \
    "chromium, chromium-driver (>= 115.0)" \
    && chromium --version && chromedriver --version

......

EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

最後一行的 CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] 由於要帶入環境變數 $PORT 修改如下:

CMD uvicorn main:app --host 0.0.0.0 --port  $PORT

EXPOSE 8000 也可以改成 EXPOSE 5000 (非必須)。

檢查程式內是否有 hard code PORT

原本的 https://github.com/assafelovic/gpt-researcher/blob/master/main.py 會固定使用 8000 port 要修改。

from backend.server import app
import os
port = int(os.environ.get("PORT", 5000))

if __name__ == "__main__":
    import uvicorn

    uvicorn.run(app, host="0.0.0.0", port=port)

讓 Heroku 知道要去跑 Docker build

建立一個檔案 heroky.yml ,然後很簡單加上以下內容。

build:
  docker:
    web: Dockerfile

最後如何讓他可以一鍵部署 - Using Heroku Deployment

{
    "name": "GPT Researcher",
    "description": "GPT Researcher is an autonomous agent designed for comprehensive online research on a variety of tasks.",
    "env": {
        "TAVILY_API_KEY": {
            "description": "The API key for Tavily service",
            "required": true
        },
        "OPENAI_API_KEY": {
            "description": "The API key for OpenAI service",
            "required": true
        }
    },
    "stack": "container",
    "formation": {
        "web": {
            "quantity": 1
        }
    }
}

這邊有幾個需要注意的,條列說明:

  • env 設定固定的系統參數。 這裡是 TAVILY_API_KEYOPENAI_API_KEY

  • 告訴 Heroku 要跑 container stack :"stack": "container",

  • 最後讓他知道裡面有幾個 services :

     "formation": {
            "web": {
                "quantity": 1
            }
        }
    

大功告成:

還蠻簡單的吧? 其實 Heroku 運算能力還蠻夠的,要部署一些服務也蠻簡單的。

[論文心得] 什麼是 LLaVA 與 LLaVA-Interactive

img

前提:

LLaVA-Interactive 週末又在看微軟發表的新的 POC (還有論文) , LLaVA ( (Large Language-and-Vision Assistant: 可以讓你對一圖片透過 LLM 跟他對話,聽說是 GPT-4V 面向的能力),而微軟更依據這個打造黃金三角:

- Visual Chat: 針對圖像來理解 - Grounded Editing: 針對原有圖像的修改 - Interactive Segmentation: 透過一些互動的修改

你可以針對圖片去修改,重新生成後,再來針對新產生的圖片去理解並且去做 Visual Chat 。

論文, Github 跟 demo 都在 https://llava-vl.github.io/llava-interactive/

註解: LLaVA 是根據這個 repo https://github.com/haotian-liu/LLaVA

相關論文摘要:

LLaVA-Interactive是一個用於多模態人工智能互動的研究原型系統。該系統可以通過接收多模態用戶輸入並生成多模態回應,與用戶進行多輪對話。LLaVA-Interactive不僅僅局限於語言提示,還可以通過視覺提示對人類意圖進行對齊。該系統的開發非常節省成本,因為它結合了LLaVA的視覺聊天、SEEM的圖像分割以及GLIGEN的圖像生成和編輯等三個多模態技能,而無需進行額外的模型訓練。通過展示多種應用場景,我們展示了LLaVA-Interactive的潛力,並激發了未來在多模態互動系統方面的研究。

實際展示:

image-20231103215916067

  • 左邊上傳一張湖邊的圖片

  • 透過畫線的方式去修改(增加鳥跟船)。

  • 然後在右邊可以去根據新產生的圖片去聊天跟理解。

[論文心得] MM-VID : Advancing Video Understanding with GPT-4V(ision)

論文名稱:MM-VID : Advancing Video Understanding with GPT-4V(ision)

image-20240116094241013

image-20240116094251678

MM-VID : Advancing Video Understanding with GPT-4V(ision)

微軟對於 LMM 火力展示又來了,他們公開一套框架叫做 MM-VID 。

可以對於 Multiple Model 更強大的綜合應用。

不論是看動影片劇情,找尋某個片段。更有影片與聲音的綜合理解功能。第二張圖是架構,基本上透過兩個方面來綜合理解:

- 每一個 clip 的理解 (GPT-4V)

- 對於Metadata 的理解 (GPT-4)

最後產生總結與推論的相關工作

[好書分享] 重新想像教育的未來

重新想像教育的未來 - 世界教育部長肯.羅賓森最後演講,對教育、環保、文化的深刻洞見
作者: 肯.羅賓森  凱特.羅賓森  
原文作者: Sir Ken Robinson  Kate Robinson  
譯者: 廖建容  
出版社:天下文化 

買書推薦網址:

前言:

這是 2023 年第14本讀完的書。 對於 肯.羅賓森 (Sir Ken Robinson) 你可能有看過他在 TED 上面的演講(據說是 TED 目前最多人看過的影片)。關於「學校是否扼殺了創意!」。 肯.羅賓森 是一個致力於教育的偉大教育家,並且透過許多演講與書籍來分享關於教育的看法,這一本是他最後一本創作(因為身體因素,後期都是女兒協助完成)。

內容摘要:

▎教育,需要重新想像

現行教育體制有如「工業化農場」,過度看重服從、測驗和考上名校,
更甚於健康快樂、創造力和學習,忽視孩子的焦慮、壓力和迷茫。

如同我們正在破壞自然資源的多樣性,現行教育體制也在毀滅人類天賦的多樣性。

教育是活的系統,為活生生的人培育心智和心靈。
教育必須使學生了解周遭的世界,以及自己擁有的獨特天賦,
才能提高孩子的成就,使他們能在即將承接的世界發光發熱。

父母和老師是孩子最重要的擁護者;大人對孩子的信任必須高過對教育體系的信任。
當土壤對了,農牧系統就會順利發展;當教育對了,孩子便會順利成長。

一個教育制度能夠成功,不是因為考試,而是個體受到肯定,天賦的多元性受到重視。

在校園裡創造創意性的連結,用跨越年齡、跨越課程、多學科的方式學習,顧及個人的興趣,
以及每個人選擇的獨特路徑,不再教出一代又一代一模一樣的孩子,讓成長、發展和學習自然發生。

這就是像田地一樣充滿生機的「野化教育」,
讓孩子在健康的土壤學習與成長,不再看重標準化,而是發展多樣性。

教育的目標是培養八個核心能力:好奇心、創造力、評判力、溝通力、合作力、同情心、內心的平靜和公民權。
使學生離開校園之後,有能力迎接一生中必然要面對的個人、文化、經濟和社會的挑戰。

▎學校,需要重新想像

學校不該扼殺創意,而要成為活潑的學習場域,幫助學生真正認識自己的獨特天賦和興趣。

學校不該把學科分成「主科」(像是國文、數學、英文與科學)和
「副科」(像是藝術、音樂、體育)。「智商」並非「智力」的全貌。
人類的智力是多元的,鼓勵孩子發展多元智力,
才能發揮創造力。智力的最高形式,是創造性思考。

學校就像一個健康蓬勃的生態系統;
看重老師、跨學科教學、課表有彈性、以正確角度看待評量,
才能達成個人化學習的目標。

學校是廣義的文化生態系統的一部分。
優秀的農民會培育植物的自然生態系統,
同樣的,優秀的學校會致力與外界的更大社群有更緊密的連結。

▎未來,需要重新想像

強大的想像能力讓人類創造出影響深遠的成就,
改變了地球的面貌,但同時也把我們帶到懸崖邊緣。

這個時代的挑戰既真實又急迫,而且人類就是問題的源頭。
氣候變遷危機和地球困境是我們漠視大自然的結果。
要迎接地球與人類存亡的挑戰,我們必須發揮創造力,
讓經濟的發展能夠多元與永續,使生態系能夠平衡與蓬勃發展。

人類既然創造了目前居住的世界,就一定有辦法改造它。
長期以來我們一直用同樣的方式,不斷消耗人類資源和地球自然資源;
必須立刻解決這兩個問題,才能想望未來。

人類的優勢

人類天生的能力:

  • 想像力
  • 創造力
    • 過程
    • 原創
    • 價值

許多相關的創造力,在於現今社會許多不同媒體與事物的變革上。

你比你所想的更豐富

智力是多元的:

  • 在某些層面比較強,相較出來的其他層面就會比較弱。
  • 相關的智力也跟天生的環境有關。

智力是動態的:

  • 根據不同事情,不同環境的刺激。會有相關智力的表現。
  • 將智力與學習科目綁在一起,就會忽略了「創造力」

創造力的迷思:

  • 不是只有藝術相關的才是創造力,任何科目與項目都跟創造力有關。
  • 創造力來自於環境,各種遺傳也會影響著創造力的呈現方式。

教育的盲點:

  • 試著有條理地整理他們需要的知識,但是卻忘記了他們喜愛的事物。
  • 如何培養著相關創造力的產生。
  • 教育需要了解每一個學生:
    • 你了解的周遭世界
    • 因為你而存在的內在世界(創造力與智力

教育主要的方向:

  • 個人:
    • 了解並尊重每一個人,讓孩子樂於接受教育。
  • 文化:
    • 肯定自己的文化,了解其他文化與做法。
  • 經濟
  • 社會

八個重要的能力:

好奇心: 提處問題與探索世界運作方式的能力。

創造力: 產生新的想法和付諸實踐的能力。

  • 試著引導孩子們去探索,產生興趣。

判斷力: 分析資訊和想法,形成合理的論點與判斷力。

  • 幫助孩子們如何去尋找正確,並且來具有批判性思考。

溝通力:以不同方式清楚自信地表達想法和感受的能力。

合作力: 以建設性方式與他人共事的能力。

同情心: 對他人感同身受並因此採取行動的能力。

內心的平靜:與內在感受連結和培養內在和諧平衡的能力。

公民權: 以正向行動投入社會以及參與社會維繫過程的能力。

從工廠到農場的教育: 野化教育

工廠教育:

  • 大量生產的方式
  • 線性生產
  • 每個人(老師)有自己負責的項目(科目)
  • 預先定義,一成不變,嚴格控管

工廠化教育的缺點:

  • 把孩子當成商品來教育(到大學),但是往往在「成品」之前,他們的人生以經開始了一大半。
  • 透過固定化的教育,許多孩子變得更不快樂。

野化教育:

  • 好的農夫不會限制生長的框架
  • 反而會準備最好土壤,讓植物去成長茁壯。
  • 優秀的學校會專注於創造讓孩子成長茁壯,發光發熱的條件。

讓學校變成生態系統:

  • 尊重生態系統的多樣性(孩子們的多樣性)

  • 看重老師,就像孩子本身是教育的主體一樣。 老師也是教育裡面完全無法被剝奪的一環。老師就像是一個良好有經驗的農夫,需要被尊重與給予良好的待遇。

    • 老師的價值在於促進學習動機。(不是讓孩子拿高分)
    • 老師需要針對不同的學生給予不同的誘因與促進他們學習的動機。

    image-20231102221801598

    image-20231102221804284

  • 透過個人化教育:

    • 多樣性
    • 多面向,多元的智力發展
    • 更有彈性。
      • 如果有一家公司 40 分重要規定員工要做不同的事情,可能會倒閉。但是學校正在這樣做!

image-20231102222252110

心得:

如果說這是一本來自於「肯.羅賓森」的一本書,不如說這是他一輩子在做的事情的總結。就像他的三場改變數千萬人的 TED 演講一樣。整本書圍繞著這三個重要的概念,透過這三個主要的分享,帶來了三個概念:

  • 教育本身需要保有個人化
  • 如何透過野化教育來讓每一個小孩獲得最適合他的教育。
  • 如何讓學校變成良好的生態系統,而尊重老師也是重要的一環。

真的會讓每一個父母深思的一本書,我也相當感謝肯.羅賓森帶來的教育的震撼。也希望每一個兒童能夠受到更適合他們,更發人深省的教育系統。