Videos JavaScripts for Open-Source AI Developers in Nowadays

Description

คุณโบ๊ท นำเสนอหัวข้อ "Developing JavaScript for open source Generative AI Developers in Nowadays" โดยแนะนำการใช้งาน JavaScript ในการพัฒนา AI แบบ open source คุณโบ๊ทอธิบายถึงเครื่องมือต่างๆ เช่น GitHub Models, transformers.js และ Ollama.js พร้อมสาธิตการใช้งานจริง เขาเน้นย้ำถึงความเป็นไปได้ในการใช้ JavaScript พัฒนา AI และประโยชน์ของ Small Language Model ที่สามารถทำงานบนอุปกรณ์แบบออฟไลน์ได้ วิดีโอนี้เหมาะสำหรับนักพัฒนาที่สนใจการใช้ JavaScript ในงาน AI และต้องการเรียนรู้เครื่องมือใหม่ๆ ในวงการ open source AI

Chapters

  • เปิดงาน bkk.js และแนะนำตัววิทยากร 0:00
  • โลกของซอฟต์แวร์: Proprietary vs. Open Source 0:49
  • Open Source Tech Stack สำหรับ AI และ Machine Learning 1:42
  • Small Language Model (SLM) คืออะไร? 2:05
  • 3 เครื่องมือ JavaScript สำหรับ SLM: transformers.js, Ollama.js และ GitHub Models 2:22
  • SLM: การย่อขนาด Large Language Model และ Pain Points 2:57
  • ข้อดีของ SLM: ใช้บน Local Device และ Offline ได้ 4:15
  • GitHub Models: ทางเลือกใหม่สำหรับ Hugging Face? 4:55
  • วิธีใช้ GitHub Models ด้วย JavaScript 5:45
  • transformers.js ใน Hugging Face และ Use Cases 7:00
  • ปัญหาที่พบในการทดลองใช้ transformers.js 7:55
  • Syntax และการทำงานของ transformers.js 8:30
  • Ollama.js: รันโมเดล Local บนแพลตฟอร์มของคุณ 10:31
  • หลักการทำงานของ Ollama และข้อดีเมื่อ LLM ล่ม 11:18
  • Use Cases ของ Ollama: Text Generation และ Code Generation 12:25
  • วิธีใช้ Ollama.js ด้วย JavaScript 13:42
  • เดโม Ollama.js: การใช้งานจริงและการติดตั้ง 14:21
  • การตรวจสอบและรันโมเดลใน Ollama 16:46
  • การจัดการโมเดลใน Ollama: การเช็คและดาวน์โหลด 18:08
  • กลับมาที่ VS Code: การเขียนโค้ดและรัน 18:41
  • ผลลัพธ์จากการรันและการปรับแต่ง Output 19:29
  • ตัวอย่างการใช้งาน Ollama.js: Completion Choice 21:22
  • ผลลัพธ์และ Use Cases เพิ่มเติมของ Ollama.js 23:42
  • ความเป็นไปได้ของการ Run AI ด้วย JavaScript 24:28
  • ข้อดีของ JavaScript ในการ Run AI: Compatibility และ On-device 25:57
  • สรุปและช่องทางการเรียนรู้เพิ่มเติม 26:12
  • ข้อแตกต่างระหว่าง Large Language Model และ Small Language Model 27:07

Transcript

คำบรรยายต่อไปนี้อาจไม่ถูกต้องทั้งหมด หากคุณพบข้อผิดพลาดใดๆ คุณสามารถช่วยแก้ไขข้อผิดพลาดได้บน GitHub

เปิดงาน bkk.js และแนะนำตัววิทยากร0:00

สวัสดีทุกท่านที่เข้ามาในงาน bkk.js นะครับ

ยินดีต้อนรับเข้าสู่เซสชั่นแรกนะครับ กับชื่อตัวของ Developing JavaScript for open source Generative AI Developers in Nowadays แนะนำตัวอย่างเป็นทางการนะครับ ผม Boat Charunthon นะครับ ใครที่อยากจะมาคอนเน็คก็สามารถที่จะสแกน QR Code เข้ามาข้างใน เว็บไซต์ได้นะครับ ก็ตอนนี้ก็ทำงานเป็น tech contribution ให้กับ ทางโครงการ Microsoft Learn Student Ambassador นะครับ แล้วก็เป็น Student Tech Lead ของประเทศไทยนะครับผม แล้วก็เป็นตัวของ Student Trainer แล้วก็เป็น Microsoft Office Specialist ด้วยนะครับ

โลกของซอฟต์แวร์: Proprietary vs. Open Source0:49

โอเคครับ ก็ปกติแล้วเนี่ย คือในโลกของซอฟต์แวร์เนี่ย ปกติมันจะแบ่งอยู่ 2 ประเภทใช่ไหมครับ ก็จะมีแบบ Proprietary แล้วก็ตัวของ open source นะครับ แต่ตัว proprietary มันก็คือคล้ายๆ กับ commercial ซอฟต์แอร์ อาจจะมีการเสียค่าไลเซ็นส์ หรือว่าอาจจะแบบว่าใช้บริการที่ มันอาจจะไม่ได้ฟรีนะครับ ก็มีฟรีเทียร์บ้าง แล้วก็มีแบบ premium ซึ่งมันก็ถือว่าเสียตังค์ใช่ไหมครับ แล้วก็ในเรื่องของ open source มันก็เป็นซอฟต์แวร์ที่ฟรี แล้วก็สามารถที่พัฒนา

อะไรต่อไปได้ ขอซาวเสียงหน่อยครับ ว่ามีใครชอบใช้พวกซอฟต์แวร์ open source บ้างไหมครับ ยกมือหน่อย

Open Source Tech Stack สำหรับ AI และ Machine Learning1:42

อ๋อ มีประมาณนึงเนอะ นะครับ ก็ เอ่อ หลักๆ เนี่ย ตัว tech stack เนี่ย หลักๆ มันก็จะมีประมาณนี้ใช่มั้ยครับ แล้วก็ เอ่อ ถ้าเป็นฝั่ง AI แล้วก็ Machine Learning เนี่ย มันก็จะมีแบบพวก ตัวของ Hugging Face หรือว่าจะเป็นตัวของ Ollama หรือว่าจะเป็นพวก TensorFlow หรือ Git อะไรประมาณเนี้ยครับ

Small Language Model (SLM) คืออะไร?2:05

มันจะมีประมาณนี้ครับ แต่ว่าใน experiment ของวันนี้ที่เราเอามาใช้ในเรื่องของ open source AI model ที่เราจะทำเนี่ย มันจะอยู่ในพารามิเตอร์ที่มันต่ำ หรือ อีกอย่างนึงที่เขาจะเรียกเนี่ย เขาจะเรียกว่า Small Language Model นะครับ

3 เครื่องมือ JavaScript สำหรับ SLM: transformers.js, Ollama.js และ GitHub Models2:22

โอเคครับ ก็วันนี้หลักๆ เนี่ย เอ่อ เราก็จะมา

ทำความรู้จักกับ 3 ตัวนี้นะครับ ก็จะเป็นทางฝั่งของ transformers.js ที่มาจากตัวของ Hugging Face หรือว่าจะเป็นเรื่องของ Ollama .js นะครับ ที่จะเป็นตัวใหม่ที่เป็นเทรนด์ใหม่ในการ run โมเดลบนเครื่องอะไรประมาณนี้นะครับ แล้วก็อีกอันนึงที่อยากจะแนะนำก็คือ

เป็นเรื่องของ GitHub Models แล้วก็ GitHub Repo นะครับ

SLM: การย่อขนาด Large Language Model และ Pain Points2:57

มาดูคำจำกัดความในเรื่องของ Small Language Model กันหน่อยนะครับ ว่า ตกลงเนี่ยมันคืออะไรกันแน่นะครับ ตัว Small Language Model เนี่ย มันจะเป็นในเรื่องของการ downsize ตัว Large Language Model ให้มันสามารถที่จะเอามาใช้ใน บนเครื่อง local ของเราได้ครับ ปัญหา หรือ pain points ที่เกิดขึ้น ณ ปัจจุบันนะครับ ก็คือว่า พอเรา เอ่อ โหมกัน ใช้ตัว Large Language Model ใน Data Center มันจะเกิดในเรื่องของ power consumption หรือว่าจะเป็นเรื่องของการใช้พลังงานที่ เอามาประมวลผลของตัว Large Language Model มากขึ้น ทำให้เกิดภาวะโลกร้อนนั่นเองครับ แต่ ถ้าเกิดว่าในกรณีที่เกิด outage หรือว่าเกิดการล่มของพวก

ChatGPT หรือว่า Gemini เราจะสามารถเห็นได้หลายครั้งครับว่า ตัวระบบเองมันมีโอกาสล่มนะครับ

ทางที่ดีก็คือก็จะมีพวก AI researcher หรือว่า AI engineer ช่วยคิดพัฒนา Small Language Model มาให้เราใช้บน local device ไม่ว่าจะเป็นบนมือถือของเราเองหรือว่าจะเป็น ตัวของ device อย่างคอมเราเองแบบสามารถที่จะใช้แบบ offline ได้นั่นเองครับ

ข้อดีของ SLM: ใช้บน Local Device และ Offline ได้4:15

หรือว่าเราเองสามารถจะเก็บไว้ใน Docker ก็ได้เช่นกันนะครับผม แต่ถ้าเราไม่ได้เห็นภาพว่าจาก Large Language Model มาอยู่ Small Language Model ได้ จริงๆ มันก็จะมีแบบพวก minimizer เนี่ยในการ ย่อส่วนของตัว Large Language Model ให้เป็น Small Language Model นะครับ จริงๆ มันจะมีอีกคำนึงเดี๋ยวผมจะให้ดูในสไลด์ถัดๆ ไปว่า มันใช้คำว่าอะไรนั่นเองนะครับ แต่ผมเองเนี่ยจะไม่ได้ลงรายละเอียดว่า วันนี้ตัว AI มันทำหน้าที่ยังไง แต่ว่าเราจะมาคุยใน scope ของ JavaScript นะครับ

GitHub Models: ทางเลือกใหม่สำหรับ Hugging Face?4:55

อันแรกที่ผมอยากจะคุยกันก็คือตัว GitHub Models นะครับ

คำถาม คำแรกของผม พอเวลาผมเจอตัว GitHub Models เนี่ย ผมเองก็สงสัยว่า เอ๊ย มันมาแทนที่ตัว Hugging Face ที่มันเป็น open source หรือเปล่า ซึ่งตัว GitHub Models เนี่ยจริงๆ มันอยู่ ภายใต้ ecosystem ของ GitHub นั่นเองครับ แต่ว่าเราเองเนี่ย ไม่จำเป็นที่จะต้องไป drag environment เพิ่มเติมจากตัวของ Hugging Face แล้วก็จริง ๆ ตัวโมเดลมันยังออกมา ไม่เยอะเท่าไหร่ครับ เพราะว่ามันเพิ่งเปิดตัว หลัก ๆ เนี่ย ตัวโมเดลเนี่ย มันก็จะมีในเรื่องของพวก Azure OpenAI หรือว่าจะเป็นทาง Microsoft Phi 3 แล้วก็จะมีพวก Cohere หรือว่าเป็นตัว Mistral AI นั่นเองครับ

วิธีใช้ GitHub Models ด้วย JavaScript5:45

มาดู syntax หลัก ๆ กันนะครับ ว่าใน GitHub Models นี้มันจะเป็นยังไงบ้างนะครับ หลัก ๆ ตัวของ GitHub Models มันมีอย่างเช่น JavaScript C# แล้วก็ตัวของ Python ใช่มั้ยครับ แต่วันนี้เดี๋ยวผมจะมาคุยในเรื่องของ JavaScript นั่นเองครับ ตอนแรกเราจะ import กันก่อนนะครับ import มาจากตัว Azure Rest AI Inference มีการดึงตัว key credential ใน batch นะครับ จากนั้นมีการ generate ตัว token มาก่อนนะครับ จากใน GitHub แล้วก็เอามาใส่ จากนั้นเราก็ค่อยมาใส่ตัวโมเดลที่เราจะใช้

โอเค แล้วก็ทางส่วนตอนนี้ปุ๊บ เราก็จะเห็นว่า เอ่อ ในหลักการทำงานของ client และ response เนี่ย มันก็จะมีการตั้งของ system แล้วก็ทางฝั่งของ user นั่นเองครับ แล้วก็ตัวของ response เนี่ย เราสามารถ reset ตัว temperature แล้วก็ตัวของ max token ในหลาย ๆ กรณีได้เช่นกันนะครับผม

ถ้าเกิดว่ามันมีปัญหาขึ้นมาเนี่ย มันก็จะต้องมี ตัว console error ที่มาโชว์ว่า เอ้อ มันเจอปัญหาในการดึง AI อะไรประมาณนี้นั่นเองครับ

transformers.js ใน Hugging Face และ Use Cases7:00

แล้วก็มาเรื่องที่ 2 นะครับ คือตัวของ transformers.js ใน Hugging Face นะครับ ตอนแรกเนี่ย คือ ปกติเนี่ย เราอาจจะไม่ได้เห็น ว่า use case ของ transformer.js มันใช้งานยังไง บางทีเราอาจจะเห็นระบบหลังบ้านเนี่ย คือตามหลายบริษัทเนี่ย อาจจะปิดไม่ให้เราได้เห็นตัว source code อะไรประมาณเนี้ยครับ แต่ว่า ผมพอไปเห็นแบบ use case บางส่วนจาก อย่างเช่นตัวเว็บ LLM chat นะครับ

ก็คือมันก็จะทำการโหลดโมเดลโดยการใช้ cache นั่นเองครับ แล้วก็เอามาโหลดในเครื่องนะครับ แล้วก็อีกอันนึงก็คือตัวที่พัฒนามาจากตัวเว็บ LLM ก็จะใช้ engine ที่เรียกว่า WebGPU นั่นเองครับ

หลักๆ ตัวโครงสร้างมันก็จะมาจากตัว transformer.js นะครับ

ปัญหาที่พบในการทดลองใช้ transformers.js7:55

แต่ว่าระหว่างทางที่ผมทำ experiment ตัวเนี้ยครับ เกิดสะดุดขึ้นมาครับ ก็กลายเป็นว่าคือเครื่องผมอะ มันมีปัญหาอยู่แล้วครับ เพราะว่า เครื่องผมสเปกค่อนข้างที่จะอ่า กากอยู่พอสมควรนะครับ เพราะว่า คือจริงๆ แล้วเนี่ย ตัวผมเป็น GeForce RTX 3080 โดยประมาณนะครับ มันก็จะทำให้เกิดอ่า การ์ดจอมีปัญหาอะไรประมาณเนี้ยครับ เพราะว่า การ generate ความร้อนเนี่ย ภายในเครื่องเนี่ย มันทำให้ตัวหน้าจอมีปัญหาไปด้วยนะครับ

Syntax และการทำงานของ transformers.js8:30

เรามาดู syntax บาง syntax กันนะครับ ก็ มันจะมีการ ในการดึงตัว WebGPU เข้ามาใช้นั่นเองครับ แล้วก็ให้มัน navigate นะครับ จากนั้นมันก็จะมีระบบตัวแอป แล้วก็มาทำเป็นพวก status loading message เรื่อยๆ นะครับผม จากนั้นก็มันจะมีในการทำ อ่า แบ่ง role ว่า

เป็น user หรือจะเป็นตัวของ system นะครับ แต่ว่าตัวแอปเนี่ย อาจจะไม่ได้มีอะไรครับ มันก็จะไปหนักอยู่ที่ worker.js หรือว่า ตัวของ AI นะครับ ก็ ตัวแรกมันก็จะ import ตัวของ AutoTokenizer ก็คือระบบการคิดคำ แล้วก็มีเรื่องของ text streamer ที่เอาไว้พริ้นต์ตัว text ออกมาที่เป็น output ออกมานะครับ แล้วก็แน่นอนครับว่า เวลาเราดึงตัวโมเดลเนี่ย เราจะดึงตัวของ Transformer นั่นเองนะครับ

พอมาตัวคลาสอีกคลาสหนึ่งนะครับ ก็จะเป็นตัว text generation pipeline ก็คือมันจะดึงทั้งตัว model ID แล้วก็ดึงทั้งตัวของ

โมเดลที่เราจะเลือกใช้นะครับ ก็ เราจะ copy จากรหัสที่มีอยู่ใน Hugging Face แล้วก็เอามาลงใน model ID นั่นเองครับ แล้วก็ พอใครเห็นตัว syntax ตรงเนี้ย เผื่ออาจจะมีใครสงสัยว่า ไอ้ Q4 เนี่ยมันคืออะไรนะครับ ตัว Q4 เนี่ย มันคือ quantization 4 bit หรือว่า ตัวย่อขนาดโดยใช้ 4 bit นั่นเองนะครับ ซึ่ง quantization อย่างที่เมื่อกี้ที่ผมใช้คำว่า minimizer กับ quantization เนี่ย มันก็จะมีความหมายคล้ายๆ กัน โดยที่ convert bit จาก LLM ที่มีขนาดใหญ่ ให้มีขนาดที่ เล็กลง แล้วก็เอามาอยู่ให้กับตัวเครื่องได้นั่นเองนะครับ

Ollama.js: รันโมเดล Local บนแพลตฟอร์มของคุณ10:31

มาถึงตัวสุดท้ายนะครับ ก็จะเป็นตัวของ Ollama.js ก็จะเป็นตัว Ollama ที่มัน run local อยู่ในแพลตฟอร์มของเรานั่นเองครับ โอเค ตัวนี้มันเป็นตัวที่ค่อนข้างที่น่าสนใจ แล้วก็จะเป็นเทรนด์ใหม่ในอนาคตด้วยนะครับ ว่าในกรณีที่ผมเคยเล่าไปแล้วว่า มันอาจจะเกิดกรณีในเรื่องของ outage ของ LLM อย่างพวก ChatGPT หรือว่าจะเป็นพวก Gemini ที่มัน maintenance แบบว่า เขาเรียกว่า พอมันล่มปุ๊บ

แล้วก็มีการ maintenance เราก็ไม่รู้ว่ามันจะซ่อมเสร็จเมื่อไหร่ใช่ไหมครับ แล้วเราเองอะ เราก็ต้องพึ่ง AI ในการทำงานอะไรสักอย่าง

หลักการทำงานของ Ollama และข้อดีเมื่อ LLM ล่ม11:18

งานของเราหรือว่า productivity ของเราเนี่ย ในหลักการทำงานของ Ollama เองเนี่ยครับ มันก็จะ มีทั้งการ load โมเดลจากตัว Docker ของทาง Ollama เอง แล้วก็เอามาใส่ในเครื่องของเราใน local machine นะครับ แล้วเวลาการ run เนี่ย มันจะ run ใน background service นะครับ เราจะใช้คำสั่ง Ollama run model name ซึ่ง client ตรงเนี้ย มันคือทางเว็บไซต์ของ Ollama เพราะเราอยากจะได้โมเดลสักโมเดลหนึ่ง เราก็มาขอจากตัวของ client

แล้วจากนั้นเนี่ย ให้ตัว client เนี่ย มาส่งทาง background service นั่นเองครับ พอจะ create หรือจะ push เนี่ย เราก็สามารถทำ integrate ระหว่างตัวเครื่อง แล้วก็จากทางตัวของ Ollama นั่นเองนะครับ

แล้วก็ที่สำคัญก็คือ พอเราอยากจะทำเป็นตัวของ browsing หรือว่าจะเป็นตัวของการดึง API เนี่ย เราก็จะใช้ตัว localhost ตัวนี้ด้านล่างเป็นตัวหลักนั่นเองนะครับผม

Use Cases ของ Ollama: Text Generation และ Code Generation12:25

มาดู ecosystem ในการทำ Ollama ใน use case อื่นๆ

บางทีในกรณีที่มันไม่ได้ทำเฉพาะในเรื่องของ text generation อย่างเดียว ทำในเรื่องของ code generation ได้เช่นกันนะครับ โดยที่มันจะใช้เนี่ย บางคนอาจจะเคยได้ยินว่ามันจะมี extension นึงของ VS Code ที่ชื่อว่า Continue ที่เอามาช่วยในเรื่องของ code generation ซึ่งมันก็จะดึงจาก ตัวแพลตฟอร์ม Ollama ของเครื่องของเรานั่นเองครับ แต่ ก่อนที่มันจะ run ได้เนี่ย เราจะต้องมีโมเดลก่อน ซึ่ง ตัวโมเดล เราสามารถที่จะเลือก ว่าจะเป็นตัวของ Gemma 2 ก็ได้ หรือว่าจะเป็น Phi 3.5 ก็ได้เช่นกันครับ อย่างในตัวอย่างนี้ เราก็จะเห็นว่าเขาใช้ในตัวของ Granite 20 พันล้านพารามิเตอร์ หรือว่าจะเป็นแบบ 8b ก็แล้วแต่ครับ แต่ก่อนที่มันจะมาเป็นตัวโมเดล ที่มาอยู่ในเครื่องเนี่ย มันก็จะมีในการดึงตัวของ

โมเดลจาก Hugging Face ก่อน แล้วก็เอามาแปลงเป็น GGUF โดยการ quantize มันให้เหลือ 4 bit จากนั้นเนี่ย เราก็เอามาใช้แบบ local ได้นั่นเองนะครับ

วิธีใช้ Ollama.js ด้วย JavaScript13:42

โอเคครับ syntax ง่ายๆ เลยครับ ก็คือตอนแรกเราจะ import ตัวของ OpenAI ก่อน ซึ่งเป็นเหมือนกับระบบ main นะครับ ที่ อ่า ลอกเลียนแบบจากตัวของ OpenAI นั่นเอง จากนั้นเราก็จะมี base URL แล้วก็ใส่ API key สำหรับ Ollama เองเนี่ย เราจะไม่ได้พึ่งตัว API key เลยครับ เราแค่ base ตัว URL ได้อย่างเดียว แล้วก็ อ่า chunk ที่เราจะมาใช้เนี่ย ก็คือเราเลือกโมเดลที่เรามีอยู่ในเครื่อง แล้วก็จากนั้นก็จะใช้ตัว message แล้วก็ ทำเป็นแบ่ง role ว่าจะเป็น user หรือจะเป็น system ก็แล้วแต่นั่นเองครับ

เดโม Ollama.js: การใช้งานจริงและการติดตั้ง14:21

เรามาดูเดโมกันนะครับ

โอเคครับ

OK ครับ ก็เริ่มต้น ผมจะเขียนตัว generate1.js ขึ้นมานะครับ ว่า

หลักๆ เนี่ย เราจะ import ตัวอันนี้ก่อน

ผมจะ import ตัวของ Ollama ก่อนนะครับ จากนั้นเนี่ยก็จะ control ตัว generate ว่า model ที่เราจะใช้ก็คือตัว model Phi 3.5 นะครับ จากนั้นก็ prompt เนี่ย ผมก็ใส่ prompt ว่า What is 2 + 5? 2 + 5 ได้เท่าไหร่ อะไรประมาณนั้นนะครับ แล้วก็มีการใส่ console.log คราวนี้นะครับ ก็ ก่อนที่จะมาถึงตรงนี้ เราอาจจะต้องไปดาวน์โหลดตัว model ที่ชื่อว่า Ollama กันก่อนนะครับ ตอนแรกที่เราจะดาวน์โหลดเนี่ย เราเข้าไปที่ตัวเว็บไซต์ olama.com นะครับ ซึ่งเรา search Ollama ปุ๊บ จากนั้นเราก็สามารถกดดาวน์โหลดตรงนี้ได้นั่นเอง เราสามารถ ที่จะมาดูตัว model ว่าเราอยากจะใช้ model ตัวไหน เราสามารถเข้ามาที่ตัว model แล้วก็จะมีเป็น Llama 3.1, Gemma 2 หรือว่าอะไรก็แล้วแต่ และตอนนี้ผมลงตัว Ollama ไปในเครื่องเรียบร้อยแล้วนะครับ

การตรวจสอบและรันโมเดลใน Ollama16:46

พอจะเช็คตัว Ollama ว่า run ไหม เราเข้าที่ command prompt นะครับ หรือว่าจะเป็น terminal อืม เอ่อ terminal ของแต่ละเครื่องก็แล้วแต่นะครับ ผมเข้าที่ command prompt

ครับ ปึ๊บๆๆๆๆ

จากนั้น เรา run ด้วยคำสั่งคำว่า Ollama ครับ Ollama ปึ๊บ มันก็จะขึ้น available commands นะครับ ว่ามันจะมี serve มี create มี run แล้วแต่นะครับ จากนั้นเนี่ย พอเราจะ run ตัวใดตัวหนึ่ง สมมุติว่าผมจะ Run ตัว Phi 3.5 ผม Run ollama run

phi3.5 นะครับ มันก็จะทำการโหลด

นะครับ

มันก็จะให้ขึ้นเมสเซจออกมานะครับ แล้วก็สมมติว่าเราอยากจะพิมพ์ทักทายมันครับ "Hello"

โอเคมันก็จะขึ้นนะครับ ก็ ณ ตอนเนี้ยนะครับ ถ้าเป็นการทำงานหลัก ๆ ของมันใน— เดี๋ยวเคสจริงๆ ถ้าสมมุติว่าเราเอาอินเทอร์เน็ตออกเนี่ย มันก็ยังสามารถที่จะทำงานได้นั่นเองนะครับผม

การจัดการโมเดลใน Ollama: การเช็คและดาวน์โหลด18:08

และตอนนี้ในตัวของเครื่องผมเนี่ย

มันจะมีโมเดลหลักๆ อยู่แค่ตัวเดียวนะครับ ซึ่งเราสามารถเช็คตัวโมเดลว่ามีโมเดลไหนไปในเครื่องเราก็ ollama ls แล้วมันก็จะขึ้นชื่อเลยว่า เรามี Phi 3.5 เรามี Nomic อะไรประมาณนี้ครับ แต่ถ้าสมมุติว่าในกรณีที่เราอยากจะโหลด ตัว Gemma 2 สัก

สองพันล้านพารามิเตอร์ก็สามารถทำได้ใน Command Prompt นั่นเองครับ

กลับมาที่ VS Code: การเขียนโค้ดและรัน18:41

กลับมาที่ตัวของ VS Code นะครับ หลัก ๆ แล้วเนี่ย พอเราเสร็จจากการเขียน Generate ปุ๊บ เดี๋ยวเราจะมาดูตัว console.log(response) กันก่อนนะครับ

อุ๊ปส์

ครั้งนี้ผมจะใช้ตัว runtime ที่ชื่อว่า Bun นะครับ เพราะว่ามันสะดวกและรวดเร็วนะครับ

มันโหลดนิดนึงครับ เพราะว่ามันจะต้องไปดึงจากหลังบ้าน มันถึงจะค่อย generate ให้เราได้เห็นนะครับ เรามาดูตัว result กันนะครับ

ผลลัพธ์จากการรันและการปรับแต่ง Output19:29

ซึ่งตัว result ที่ผม run ได้เนี่ย มันจะออกมาในรูปแบบของ JSON ซึ่งมันจะบอกเลยครับว่า model ที่เลือกใช้เนี่ย เป็น model อะไรนะครับ แล้วก็ create ตั้งแต่เมื่อไหร่ แล้วก็มันก็จะ เอ่อ generate response ออกมาว่า เอ่อ

นี่ 2 + 5 = 7 นะ อะไรประมาณนี้นะครับ แล้วก็มี มีการคิด context มีเรื่องของ เอ่อ token นั่นเองนะครับ

แต่ถ้าสมมุติว่าในกรณีที่เราไม่ได้ต้องการที่เราจะเห็นไฟล์ JSON อะไรประมาณเเบบนี้นะครับ เราสามารถที่จะใส่ เอ่อ console.log แล้วก็ output.response ไปนะครับ เพราะว่าเราเอง เราต้องการเฉพาะแค่ output อย่างเดียวนะครับ

จากนั้นเรารันใหม่นะครับ ด้วย bun

generate1.js นะครับ แล้วรอสักครู่นะครับ เพราะว่ามันจะต้องดึงตัวหลังบ้าน

นะครับ สักครู่นะครับ รู้สึกว่า อ๋อ ยังไม่ได้เซฟ

อืม เอ๊ะ

สักครู่นะครับ รู้สึกว่าน่าจะมีอะไรผิดปกติ

น่าจะมีบางอย่างแปลกๆ แต่ว่าเดี๋ยวดูอันอีกต่อไป ตัวที่เป็นตัวแทนนะครับ

ตัวอย่างการใช้งาน Ollama.js: Completion Choice21:22

ถ้าสมมุติว่าในกรณีที่ เราเองเนี่ยครับ จะทำเป็น Completion Choice นะครับ

เดี๋ยวมาดูกันนะครับ

มันจะโหลดแป๊บนึงครับเพราะว่ามันจะต้องดึงหลังบ้านด้วยครับว่า หลังบ้านมัน Generate อยู่แล้วมันค่อย Push มาที่ตัวหน้าบ้านนั่นเองนะครับ

เอ๊ะ น่าจะค้างแน่ ๆ เลย เดี๋ยวสักครู่นะครับ

เดี๋ยวผมขออนุญาตเคลียร์เทอร์มินอลแปปนึง

อ่าเค เพราะว่าปกติแล้วเนี่ย ในตัวของพารามิเตอร์ที่มันเล็กลงแล้วก็มันอยู่ภายในเครื่อง มันจะต้องใช้รีซอร์สเครื่อง อันที่สำคัญก็คือ ถ้าพารามิเตอร์น้อย โอกาสในการทำงานของมันอะ มันควรที่จะ Generate ค่อนข้างที่เร็วนะครับ

ผลลัพธ์และ Use Cases เพิ่มเติมของ Ollama.js23:42

ซึ่งผลที่ออกมา มันก็ตรงตัวนะครับ

พอเราบอกว่าพร้อมเนี่ยที่จะ say hello ใน french เนี่ย ก็มันก็จะออกมาเป็น Bonjour นั่นเองนะครับ แล้วก็จริงๆ มันก็จะมีตัวของ Use Case อื่นๆ ที่เอามาใช้ทำนะครับ แล้วก็ให้มันไม่ได้เห็นตัวไฟล์ แบบรูปแบบ .json นั่นเองนะครับ ก็จะมีแบบ ในเรื่องของ say hello หรือว่าจะเป็นเรื่องของการ หนึ่ง ตัวของไฟล์ json เนี่ย เอามาใช้ในการทำพวก RAG หรือว่า

เราสามารถดึงคอนเทนต์ที่เป็น json เอามาใช้ได้นั่นเองนะครับ

ความเป็นไปได้ของการ Run AI ด้วย JavaScript24:28

ผมเองอะ ผมเชื่อว่าคนอื่นอาจจะถามว่า

มันมีความรู้สึกว่ามันมีความเป็นไปไม่ได้อะครับที่ เรา Run AI ด้วย JavaScript เพราะว่าด้วยเรื่องของ Runtime หรืออะไรก็แล้วแต่ มันดูไม่ค่อยสมเหตุสมผลในการใช้ JavaScript ในการ Run AI นะครับ แต่จริง ๆ เนี่ย มันก็จะมีหลาย ๆ อย่างที่เรารู้สึกว่า มันเป็นโอกาสใหม่ที่มันสามารถที่จะใช้ JavaScript มา Run AI ได้เช่นกันครับ ซึ่งในเรื่องของ Popularity เนี่ย ในเรื่องของหลังบ้านตัวของ

เอ่อ พวก OpenAI มันก็มีการใช้ JavaScript ใช่ไหมครับ เราก็ไม่ได้มีโอกาสในการเห็นหลังบ้านว่า เอ๊ะ มันใช้ในส่วนไหนบ้างนะครับ ก็ตอนแรกเราก็นึกว่า มันจะใช้ในตัวของ frontend อย่างเดียว แต่ว่าบางที backend เนี่ย มีใช้บ้าง แต่เราก็ไม่ได้รู้ว่า ข้างในของ OpenAI หรือว่าจะเป็น Gemini เอง เขาทำอะไรบ้างนะครับ แต่ว่าในเรื่องของ ecosystem เอง ก็

ทาง Python เองเนี่ย มันอาจจะ dev ในตัวของ AI ได้มากกว่า แต่ว่าในเรื่องของตัว JavaScript มันก็ไม่ได้แพ้กันนะครับ และผมหวังว่าเนี่ย ในตัวของ JavaScript มันก็จะมีคนที่เอามาทำตัวของ library เพิ่มขึ้นนั่นเองนะครับ

ข้อดีของ JavaScript ในการ Run AI: Compatibility และ On-device25:57

แล้วก็ในเรื่องของ compatibility ของตัว JavaScript ผมมองว่ามันสามารถที่จะใช้ในหลายกรณี มากขึ้น ไม่ว่าจะเป็น on-device ตัวของ monitor หรือว่าจะเป็นในเรื่องของ mobile ได้นั่นเองนะครับ

สรุปและช่องทางการเรียนรู้เพิ่มเติม26:12

แล้วก็ถ้าใครอยากจะตามสรุปเป็นภาษาไทย ก็สามารถที่จะ

หาอ่านใน Medium ผมเคยเขียนบล็อกตัวนี้ทิ้งไว้ แล้วก็ที่สำคัญ ถ้าใครสนใจอยากจะทำเรื่องของเดโม

เพิ่มเติมอะไรพวกนี้ครับ ก็สามารถที่จะมา join session ผมใน เดือนหน้าในงาน JavaScript Bangkok นั่นเองนะครับผม แล้วก็มันก็จะมี use case อื่นๆ ที่เอามาคุยนะครับ ก็ในเรื่องของ Language Model ใน transformer.js ก็สามารถที่จะมาดูในงาน JavaScript Bangkok ที่จะถึงนี้ได้นะครับผม แล้วก็ที่สำคัญผมก็จะเดโม ตัวนี้มากขึ้นในตัวของงาน Season of AI ของ Microsoft นั่นเองนะครับ แล้วก็จะเดโมคู่กับพี่เปรม BorntoDev นะครับ

ข้อแตกต่างระหว่าง Large Language Model และ Small Language Model27:07

สิ่งสุดท้ายก็คือ เราอยากจะมองว่า Large Language Model มันสามารถทำอะไรได้หลายอย่างใช่ไหมครับ แต่ว่าบางทีเราคิดว่า

มันอาจจะไม่ได้ specify ว่ามันจะถนัดด้านใดด้านหนึ่งใช่ไหมครับ แต่ว่าในตัวของ Small Language Model มันเองก็สามารถที่จะรู้จัก

สิ่งที่สามารถที่จะแก้งานได้ถูกจุด ถูกวิธีได้มากขึ้นนะครับ ซึ่งมันสามารถที่จะ specify ใน task แต่ละ task เป็น multi-modal ที่สามารถที่จะแยกโมเดลออกจากกัน แล้วก็ทำงานที่ละเอียดได้มากยิ่งขึ้นครับ Every little thing you do leads up to the biggest thing ครับผม ก็สไลด์สามารถที่จะโหลดแล้วก็เอามาดูได้ แล้วก็สามารถที่จะเข้ามาใน GitHub แล้วก็เอามาพูด แล้วก็เอามาลองทำได้นั่นเองครับ ขอขอบคุณทุกๆ คน ในการรับชมและรับฟัง session นี้ครับ ขอบคุณครับ