🎞️ Videos Mastering Phi-3 Experiments: Innovative Approaches with JavaScript & Ollama

Description

Join us for an immersive session where we dive deep into the world of Phi-3 experiments, leveraging the power of JavaScript and the versatile Ollama platform. Whether you're a seasoned developer or a curious newcomer, this workshop is designed to equip you with the knowledge and skills needed to create cutting-edge applications and AI-driven solutions. In this session, participants will learn about the latest advancements in JavaScript with "Bun" and how they can be applied to Phi-3 experiments, as well as explore the potential of the Ollama platform to enhance Phi-3 projects with state-of-the-art AI models as running locally on device. In this session, I will guide you through hands-on projects, enabling you to build practical skills and reinforce your learning. From networking with fellow enthusiasts to staying updated on the latest trends, this workshop offers a comprehensive experience tailored for anyone looking to advance their knowledge in the exciting intersection of web development and AI. Boat Charunthon Limseelo https://linktr.ee/boatchrnthn

Chapters

  • แนะนำตัวและ Mastering Phi-3.5 กับ Small Language Model 0:00
  • Agenda และภาพรวมของ Open Source Language Model 1:19
  • ปัญหาของ Proprietary Model และข้อดีของ Small Language Model (SLM) 2:14
  • เปรียบเทียบ LLM และ SLM พร้อมตัวอย่าง 3:37
  • ขนาดที่เหมาะสมของ SLM และ Use Cases 4:33
  • การย่อขนาด LLM เป็น SLM ด้วย Quantization 6:04
  • Microsoft และ Phi: AI for Science 7:00
  • ประสิทธิภาพของ Phi และการ Training 8:37
  • Mixture of Expert (MOE) ใน Phi-3.5 9:44
  • หลักการ Training Model ของ Microsoft: PYD (Privacy, Your Responsibility, Diversity) 10:13
  • แนะนำ Ollama: Running AI on Local Device 11:16
  • Bun: JavaScript Runtime ที่เร็วและมีประสิทธิภาพ 12:49
  • การติดตั้ง Bun 14:20
  • Demo การใช้งาน Ollama และ Bun กับ JavaScript 14:55
  • Demo: Text Generation ด้วย Phi-3.5 17:04
  • Demo: RAG (Retrieval Augmented Generation) กับไฟล์ CSV 18:34
  • Demo: Streaming Response ใน Browser 22:16
  • Demo: สรุปไฟล์ TXT ด้วย Summarizer 22:55
  • Key Takeaway: Python vs JavaScript สำหรับ AI Development 23:29
  • อนาคตของ Language Model และความน่าเชื่อถือ 24:27
  • แนวโน้มของ Small Language Model และ Federated Learning 25:37
  • ทำไมคนไทยยังไม่ค่อยรู้จัก SLM 26:05
  • สรุปและช่องทางติดตาม 27:02

Transcript

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

แนะนำตัวและ Mastering Phi-3.5 กับ Small Language Model0:00

สวัสดีทุกๆ ท่านที่เข้ามาฟังนะครับ ยินดีต้อนรับเข้าสู่ session Mastering Phi-3.5 Experiment Innovative Approach on Small Language Model with JavaScript and Ollama นะครับ ซึ่งเราจะมาพูดคุยในเรื่องของการใช้ small language model หรือ model AI ที่มีขนาดเล็กนะครับ กับการใช้แอปพลิเคชัน Ollama และ develop ด้วย JavaScript นะครับ แนะนำตัวก่อนนะครับ ผมโบ๊ท ชรันธร นะครับ

ตอนนี้ปัจจุบันเป็น Microsoft Learn Student Ambassador นะครับ แล้วก็อยู่ภายใต้ Microsoft Office Specialist ครับ แล้วก็ศึกษาเกี่ยวกับเรื่องของ open source small AI และในเรื่องของ natural language program นะครับ สำหรับใครที่อยากจะติดตามหรือว่าอยากจะตามข่าวพวก AI

หรือว่าพวกนวัตกรรมใหม่ๆ ที่ผมลง ก็สามารถที่ติดตามใน Facebook หรือว่าใน Instagram แล้วก็ทาง LinkedIn ได้เลยนะครับ

อยากจะ acknowledge กับทุกๆ คนแล้วก็ทุกๆ specialist ที่ให้ความรู้และ inspiration ในการทำเรื่องนี้นะครับ

Agenda และภาพรวมของ Open Source Language Model1:19

agenda เราอาจจะไปเร็วๆ นะครับ ก็จะมีในเรื่องของการ recap ในเรื่องของตัว open source และตัว language model นะครับ แล้วก็เราจะมาเล่ากันว่า Phi-3.5 เนี่ยมันคืออะไร แล้วก็เราก็จะมาบอกว่าถ้าเราอยากได้ runtime ที่มันเร็วๆ ก็มาลองใช้ Bun ที่เป็น framework ใหม่ของ JavaScript นะครับ จริงๆ session ตัวนี้นะครับ ก็มีการทำ workshop ไปเมื่อวานนี้เองนะครับ แล้วก็เดี๋ยวเราก็จะมา recap กันสั้นๆ ว่าเมื่อวานเราทำอะไรกันไปบ้างนะครับ ก่อนอื่นเลยเราจะบอกว่าในโลกของ language model เนี่ยมันก็จะมีในเรื่องของการใช้ model ที่ค่อนข้างที่เป็น premium และเป็น open source นะครับ บางอันก็จะฟรีบ้าง บางอันก็ไม่ได้โชว์ source code ให้เรา develop บางอันก็จะเป็น open source ที่มันฟรี แล้วก็ develop สามารถที่จะปรึกษาทาง forum หรือว่าทาง community ได้เช่นเดียวกันครับ

ปัญหาของ Proprietary Model และข้อดีของ Small Language Model (SLM)2:14

แต่คราวนี้ครับ ทางที่เราใช้ในตัวของ proprietary

หรือว่าตัว premium เนี่ย มาอาจจะเจอปัญหาบางอย่าง อย่างเช่นในเรื่องของ currently unavailable หรือว่า server มีปัญหา หรือว่าจะเป็นพวก bad gateway สมมุติว่าเราเห็นตัว major outage ที่เกิดขึ้นใน ChatGPT เนี่ยมันก็ไม่สามารถที่จะใช้งานของ ChatGPT ได้นะครับ ผมเลยเสนอว่าถ้าเราลองใช้ในตัวของ Hugging Face แล้วก็โหลด model เข้าสู่ server ของตัวเรา เนี่ยมันก็สามารถที่จะป้องกันในเรื่องของ data leak หรือว่าจะเป็นในเรื่องของระบบล่ม หรือว่าจะเป็นในเรื่องของ internet connection นะครับ แต่ว่าใดๆ ก็ตามแต่เนี่ยในเรื่องของ specification หรือว่าในเรื่องของ hardware เนี่ย

ของเราอาจจะค่อนข้างที่ไม่มีเพียงพอครับ มันก็เลยนำมาสู่ในเรื่องของ small language model นะครับ ในตัว small language model เนี่ย มันก็สามารถที่จะใช้ใน offline ก็ได้ หรือว่าจะใช้ในการใช้ข้อมูลภายในองค์กรได้เช่นกันครับ

แล้วก็แน่นอนครับ มันป้องกันในเรื่องของ data privacy และในเรื่องของ lower resource requirement นั่นก็คือในเรื่องของการใช้ทรัพยากรที่น้อยนะครับ แล้วก็แน่นอนครับ ในการใช้ small language model เนี่ย มันสามารถที่จะลดเรื่องของการใช้พลังงานใน data center ได้เช่นเดียวกันครับ

เปรียบเทียบ LLM และ SLM พร้อมตัวอย่าง3:37

ใดๆ ก็ตามแต่ครับ ถ้าเรายังนึกภาพตัว SLM ไม่ออกเนี่ย ตัว LLM เนี่ยก็จะมีเป็นพวก GPT-4 หรือว่าจะเป็นในเรื่องของ Gemini พวก Claude นะครับ แต่ว่าในตัวของ small language model เนี่ย มันก็จะมีในเรื่องของ Gemma แล้วก็ตัว Phi ที่ผมจะมานำเสนอในวันนี้นะครับ แต่คำถามคือตัวของ small language model

มันต้องควรมีขนาดประมาณไหนนะครับ มันควรที่จะมีประมาณ 1-7 พันล้าน parameter นะครับ ที่จะสามารถที่จะโหลดเข้ามาในเครื่องได้ แล้วก็ไม่กิน spec นะครับ ในตัวของการใช้ small language model เนี่ย มันก็จะถูกยุบมาอยู่ใน domain ที่ค่อนข้างที่ specific หรือว่าเจาะจงว่าให้ทำ task ไหนนะครับ แล้วก็แน่นอนครับ ในเรื่องของ cost to operate หรือว่าค่าใช้จ่ายเนี่ย ค่อนข้างที่จะต่ำจนถึงฟรีนะครับ

ขนาดที่เหมาะสมของ SLM และ Use Cases4:33

ณ ตอนนี้ครับ ก็จะมีในเรื่องของการแข่งขัน ในเรื่องของประสิทธิภาพในเรื่องของ model ต่างๆ นะครับ ไม่ว่าจะเป็น Microsoft เองก็ test อยู่ที่ 3.8 พันล้าน parameter อยู่ที่ 2.2 GB หรือว่าจะเป็นในฝั่งของ Gemma เอง Gemma ก็จะอยู่ที่ 1.6 GB ซึ่งในการ train ข้อมูลเองเนี่ย มันก็ค่อนข้างที่จะแตกต่างกันไปนะครับ หรือแม้กระทั่งในประเทศไทยเราเองเนี่ย มันก็จะมีในเรื่องของตัวของไต้ฝุ่นแล้วก็ตัว KBDG นะครับ

ที่ support ภาษาไทยนะครับ แต่ว่าเราจะเห็นได้เลยครับว่าถ้าเราใช้ตัวไต้ฝุ่น

หรือว่าจะเป็นตัวของทะเลเองเนี่ย มันอาจจะ size อาจจะมีประมาณขนาดใหญ่ ซึ่งมันอาจจะไม่สามารถที่จะใช้แบบในคอมพิวเตอร์ได้ แบบ smooth นะครับ

use case ของเราที่เราได้ใช้ก็จะมีในเรื่องของ การใช้ลองใช้ให้กับทาง influencer หรือว่าไม่ว่าจะเป็นทางดาราหรือว่าคนที่ specific ในเรื่องของ business และ marketing นั่นเองครับ แล้วก็แน่นอนครับ เราก็มี use case ต่างๆ นานาที่เราสามารถที่จะ เอา SLM เนี่ยมาสามารถ train ข้อมูลต่างๆ นานา ไม่ว่าจะเป็นในเรื่องของประวัติศาสตร์เอง หรือว่าจะเป็นในเรื่องของ retail หรือ finance ก็สามารถที่จะเอามา fine-tune ให้มันฉลาดมากขึ้น หรือว่าเราจะใช้ RAG ที่สามารถที่จะ เอามาเพื่อเพิ่มประสิทธิภาพและความฉลาดให้กับมันนั่นเองครับ

การย่อขนาด LLM เป็น SLM ด้วย Quantization6:04

คำถามคือแล้วเราจะยุบตัว LLM มาเป็น SLM ได้ยังไงครับ

มันจะมีเทคนิคนึงครับที่ชื่อว่า quantization ครับ ก็คือจาก original model มาถูกยุบให้เหลือ quantized model ครับ แต่คำถามคือความต่างของ compressed model และตัวของ quantized model เนี่ยมันต่างกันยังไง ถ้าตัวของ compressed model เนี่ย มันก็อาจจะสูญเสียตัว node หรือว่าประสิทธิภาพบ้างนิดนึงครับ แต่จริงๆ มันก็ไม่ได้บ้างครับ เพราะว่าบางทีเนี่ยใจความของมัน หรือว่า summarize ของมันเนี่ยมันอาจจะหลุดไปเลยก็ได้ครับ แต่ว่า quantized model เนี่ยมันแค่ compress เฉยๆ มันอาจจะสูญเสียประสิทธิภาพนิดนึงครับ แต่ว่าเราสามารถที่จะเพิ่มศักยภาพ หรือการตอบของมันโดยการใช้ fine-tune หรือว่ายังใช้ RAG ได้เช่นเดียวกันนั่นเองครับ คราวนี้ครับ Microsoft เองก็สนับสนุนในการใช้ small language model มากยิ่งขึ้นนั่นเองนะครับ

Microsoft และ Phi: AI for Science7:00

layer ปกติเนี่ยเค้าจะดูในเรื่องของ model และตัวของ safety system แล้วก็แน่นอนครับในการ set system มันก็จะมีในเรื่องของ prompt นั่นเองนะครับ เราจะพูดในเรื่องของ model นะครับ ซึ่ง model ของเราเนี่ยมันชื่อว่า Phi นะครับ ตัว Phi เนี่ยมันเริ่มพัฒนาตั้งแต่ Phi-1 นะครับ ก็จะมี reasoning นิดๆ หน่อยๆ นะครับ

แต่หลักๆ ก็จะมาในเรื่องของ coding มากขึ้น แล้วก็ตัว Phi-2 ก็จะถูก public release ในตัวของงาน Ignite ปี 2023 แล้วก็ตัวล่าสุดก็คือตัว Phi-3 Phi-3 ก็จะเป็นตัวที่เสถียรที่สุดนั่นเองครับ แต่ว่าล่าสุดในไม่กี่เดือนที่ผ่านมา ก็จะมีการ launch ตัว Phi-3.5 ที่ถูก fine-tuning มาจาก Phi-3 นั่นเองครับ ซึ่งมันจะ support ในเรื่องของ multilingual และในเรื่องของ logical thinking นั่นเองครับผม ณ คราวนี้ครับ ตัวของ Phi family เองเนี่ยครับ มันจะเป็นตัว AI for science หรือว่ามันถูกคิดในเรื่องของวิทยาศาสตร์นั่นเองครับ มันก็จะมีในเรื่องของฟิสิกส์ เคมี และชีวภาพนะครับ

แล้วก็แน่นอนครับมันถูก train ด้วย hyper computing นะครับ

และในเรื่องของ scientific reasoning นะครับ คราวนี้ครับก็ถูกเอามา publish ในตัวของ Hugging Face นั่นเองครับ แล้วก็เราเองก็สามารถที่จะเอามาลองเล่น กับทาง Hugging Face นะครับ แล้วก็ตัวข้อมูลเองเนี่ยครับก็ถูก train ตั้งแต่นานแล้วครับ แล้วก็มาตัดจบเมื่อตุลาคมปี 2023 นั่นเองนะครับ

ประสิทธิภาพของ Phi และการ Training8:37

มาพูดถึงในตัวของ performance นะครับ ตัว performance เองเนี่ยมันก็จะค่อนข้างที่จะโอเค ในระดับนึง แต่มันไม่ได้บอกว่ามันจะดีนะครับ แต่ว่ามันก็ถือว่าโอเค มันสามารถที่จะตอบคำถามเราได้ถูกต้อง เพราะว่าในการ train เนี่ยครับ มันค่อนข้างที่จะใช้ตัวข้อมูลจากหนังสือทั้งหมดเลยนะครับ แล้วก็ไม่มีข้อมูลที่มาจากอินเทอร์เน็ตครับ แล้วก็ตัว Phi-3.5 ก็ MOE มันก็จะเป็น mixture of expert ซึ่งมันจะช่วยในเรื่องของ multilingual ซึ่งมันสามารถที่จะตอบภาษาไทยได้ชัดเจนนั่นเองครับ ณ ตอนนี้ใน performance ของมันเองเนี่ยครับ ที่เราเอาไป run เนี่ย มันสามารถที่จะ run ทั้งตัวของ Azure AI, Hugging Face หรือว่าตัว web neural network ถ้าใครได้เข้าไปใน session ของอาจารย์สุรชาญ ของเมื่อวานนะครับ ก็มีให้ลองกันประมาณนี้นะครับ

แล้วก็ตัว open model ก็ตอนนี้ก็ปล่อยทั้งตัว mini, small, medium แล้วก็ตัวเป็น multimodal ที่เป็น vision นั่นเองนะครับผม

Mixture of Expert (MOE) ใน Phi-3.59:44

แต่คำถามคือแล้วตัว mixture of expert เนี่ย ทำไมมันถึงไม่ได้ถูกขนานนามว่าเป็น small language model เพราะว่ามันจำเป็นที่จะต้องใช้หลายๆ node หรือหลายๆ model เอามาประกอบกัน เพื่อสร้าง intelligence ให้กับการตอบของแต่ละภาษานั่นเองครับ มันเลยกลายเป็นว่าทั้งหมดของ model มันจะตกอยู่ที่ 42 billion parameter นั่นเองครับ

หลักการ Training Model ของ Microsoft: PYD (Privacy, Your Responsibility, Diversity)10:13

ณ คราวนี้ใน principle ในการ train model เนี่ย มันก็จะมีประมาณนี้ของ Microsoft ครับ แต่ว่าผมเองผมอยากจะปรับให้มันสั้นเหลือแค่ 3 ตัวอักษร

นั่นก็คือ PYD นะครับ ซึ่งมันคือตัวย่อของเพื่อนผมนั่นเอง ซึ่งเพื่อนผมบอกว่าในตัวของ PYD หรือตามชื่อเค้านั่นน่ะ เค้ามี P ก็คือ privacy Y ก็คือ your responsibility D ก็คือ diversity นั่นเองครับ ตัว P privacy ก็จะมีในเรื่องของการย่อขนาดข้อมูล ตัดข้อมูลที่ไม่จำเป็นออกไปนะครับ แล้วก็ทำให้เป็น anonymous นั่นเองครับ แต่ว่าถ้าเป็นตัว Y ก็คือ your responsibility เราก็ควรจัดการให้มีความโปร่งใสมากขึ้น แล้วก็ในเรื่องของการ take action ต่างๆ นะครับ แล้วก็ diversity เนี่ยก็จะมีในเรื่องของการแบ่งแยก ก็ไม่ควรจำกัดเพศอะไรประมาณนี้ครับ

Responsible AI ก็จะประมาณนี้ครับ ในเรื่องของการทำ prompt engineering หรือว่าในการ set system เพื่อไม่ให้เกิดการ jailbreak อะไรประมาณนั้นนั่นเองครับ

แนะนำ Ollama: Running AI on Local Device11:16

และผมอยากจะ introduce ให้กับทุกคน ก็คือตัวของ Ollama ที่ running AI on local device นะครับ ซึ่งว่ากันตามตรงนะครับว่าในตัว Ollama เองเนี่ย เราสามารถที่จะ develop หรือว่า install ภายในตัวของ terminal นั่นเองนะครับ ก็สามารถที่จะ run by using command ได้นะครับ หรือว่าเราเองก็สามารถที่จะ run ทั้งตัว local

หรือว่า run ใน terminal ที่เป็น cloud ไม่ว่าจะเป็น Azure ก็ได้ หรือว่าจะเป็นในเรื่องของ Google Cloud Run ก็สามารถที่จะใช้ run ใน shell ได้เช่นเดียวกันครับ ไม่ว่าคุณจะ run ในตัว Llama 3.2, Phi 3.5 หรือเป็นพวก Gemma ก็สามารถที่จะ run ได้เช่นเดียวกันนะครับ แต่หลักๆ แล้วในตัวของ Ollama เองเนี่ย มันสามารถที่จะ run เฉพาะตัวของ text generation model ได้อย่างเดียวครับ

โอเคครับ ก็ถ้าพูดตามหลักๆ ในเรื่องของ function หรือว่า process ของการทำงานเนี่ย เราจะเห็นได้เลยครับว่าตัว Ollama เนี่ย มันจะดึง model จาก registry หรือว่าตัว marketplace ของตัว Ollama นั่นเองครับ จากนั้นเราทำการ pull ให้ไปสู่ local machine หรือว่า server ของเรานะครับ ก็จะใช้คำสั่ง Ollama pull หรือ Ollama run เข้าไปข้างในนั่นเองครับ แล้วเราก็สามารถที่จะโยนตัวของ local host ที่สามารถที่จะเอามา develop ภายในภาษาของ JavaScript หรือว่าจะเป็น Python ได้นั่นเองนะครับ

Bun: JavaScript Runtime ที่เร็วและมีประสิทธิภาพ12:49

โอเคครับ เรามาสู่ในอีกเรื่องหนึ่งนะครับ ก็คือตัว runtime ที่ค่อนข้างที่จะมีประสิทธิภาพ และก็เร็วมากยิ่งขึ้น นั่นคือตัว Bun นั่นเองนะครับ ซึ่งมันจะเร็วแล้วก็ใช้ memory น้อย แล้วก็สามารถใช้แบบ cross platform ได้เช่นเดียวกันนะครับ คำถามว่า Bun มันคืออะไรครับ จริงๆ ไม่ใช่ Bun นี้นะครับ นั่นมันคือซาลาเปา ซึ่ง Bun เนี่ยมันก็เป็น runtime คล้ายๆ กับ Node.js แต่มันเร็วกว่านั่นเองนะครับ และแน่นอนครับ elegant APIs ก็คือมันก็ ตัว API ค่อนข้างที่จะสั้นแล้วก็มีเรื่องของ cohesive DX นั่นเองนะครับ

อันนี้ก็จะเป็น function รวมๆ ของตัวของ Bun นั่นเองครับ ก็จะมีในเรื่องของ drop-in Node.js compatibility นะครับ แล้วก็ในเรื่องของการรองรับตัว TypeScript ก็สามารถที่จะ run TypeScript ได้เช่นเดียวกันครับ แล้วก็แน่นอนครับ เป็น cross-platform shell script เราสามารถ run ผ่านตัวของ Google Shell หรือว่าจะเป็นในเรื่องของตัวของ Linux คุณก็สามารถที่จะ run ตัว Bun ได้เช่นเดียวกัน แล้วก็แน่นอนครับ มันสามารถ run ที่ Azure ได้เช่นเดียวกันนะครับ คราวนี้ครับ มาดูตัว speed performance ของมันนะครับ ว่าตัว server-side เนี่ย Bun เนี่ย ก็สามารถที่จะทำได้เร็วกว่า Deno แล้วก็ตัวของ Node.js นั่นเองครับ หรือว่าจะเป็น websocket เอง หรือว่าจะเป็น load a huge table เนี่ย เราจะเห็นได้เลยครับว่ามันค่อนข้างที่จะมีประสิทธิภาพ และ run ได้เร็วกว่านะครับ

การติดตั้ง Bun14:20

และตัว version ล่าสุดของ Bun นะครับ ก็อยู่ที่ Bun version 1.1.25 นะครับ

โอเค แล้วก็ในเรื่องของการ installation เนี่ย ตัว installation ง่ายๆ เลยครับ เราสามารถที่จะ copy คำสั่งจากอินเทอร์เน็ต โดยการ curl ของมันนะครับ แล้วก็เอามา run ในตัว shell ของ Linux เองก็ได้ครับ หรือว่าจะเป็นแบบ install ผ่าน PowerShell ก็สามารถที่จะทำได้เช่นเดียวกันครับ หรือว่าเราก็สามารถที่จะ run ผ่านตัว npm ที่เป็น Node ได้เช่นเดียวกันนั่นเองครับ

Demo การใช้งาน Ollama และ Bun กับ JavaScript14:55

ณ คราวนี้ครับ เดี๋ยวผมจะมา demo กันสั้นๆ ว่า เอ๊ะ มัน run กันยังไง แล้ว process ที่มัน run เนี่ยมันเป็นยังไงบ้างนะครับ โอเคครับ ก็ก่อนอื่นเวลาเราจะตัว install ตัว project ของเราเนี่ย มันควรที่จะลงบาง framework หรือบาง package เพื่อให้มัน run ได้ นั่นก็คือตัว Bun add Ollama หรือว่า add ทั้ง OpenAI ด้วยนะครับ บางอันเนี่ยเราสามารถที่จะดู syntax ได้ว่า ตัว text generation ปกติเนี่ย เราจะ import Ollama อย่างเดียวก็ได้เช่นเดียวกันครับ แล้วก็เราสามารถที่จะ set ตัว system ว่า เลือก model ว่าเป็น Phi 3.5

จากนั้นเราก็ set message แล้วก็ set role content ว่า สมมุติว่า set ว่า "Why is the sky blue?" ก็เราก็ถามว่าทำไมท้องฟ้าสีฟ้าอะไรประมาณนั้นนะครับ

แล้วเราก็ set ตัว 𝚌𝚘𝚗𝚜𝚘𝚕𝚎.𝚕𝚘𝚐 เพื่อ print ตัว answer ออกมานั่นเองครับ

หรือว่าเราจะปรับเปลี่ยนเป็นในเรื่องของ streaming response นะครับ ซึ่งเมื่อกี้เนี่ย เรา print ออกมา เราไม่รู้เลยครับว่าตัว model มัน run อยู่หรือเปล่า แต่ว่าถ้าเราปรับมาเป็นแบบ streaming response เนี่ย เราสามารถที่จะเห็นได้เลยครับว่า ตัว model มันกำลังพิมพ์ให้เราได้เห็นอยู่เช่นเดียวกัน นั่นเองครับ ซึ่งตัว setting เนี่ยมันก็คล้ายๆ ประมาณนี้นั่นเองนะครับ

ซึ่งคำถามว่ามันสามารถที่จะ run Ollama ใน TypeScript ได้ไหม มัน run ได้นะครับ

ซึ่งเดี๋ยวผมจะ demo ให้ดูว่า หลักการทำงานเนี่ยมันเป็นเช่นใดนะครับ

โอเคครับ สักครู่นะครับ

Demo: Text Generation ด้วย Phi-3.517:04

ได้มั้ย จับหน่อย

โอเคครับ

ตอนแรกผมจะเข้าตัว Visual Studio Code ครับ แต่ว่าจริงๆ แล้วครับ เดี๋ยวผมจะทิ้งตัว resource ไว้ว่า ตัวโปรเจคผมเขียนอะไรไว้บ้างใน GitHub นะครับ หลักๆ แล้วครับเราก็จะเห็นได้ว่า ตัวที่เป็นตัว text generation อันนี้ผมขอเคลียร์ทิ้งไว้นะครับ ตัว text generate เนี่ย ผมก็เซ็ตติ้งไว้ประมาณนี้นะครับ โอเค อันนี้เห็นอยู่ใช่มั้ยครับ โอเคครับ เริ่มแรกก็จะ import ตัว Ollama เข้ามาครับ แล้วก็เซ็ตเลยครับว่า model ที่เราเลือกใช้คือตัวไหนนะครับ แล้วก็ตั้ง prompt ไว้นะครับ สมมุติในกรณีนี้ผมจะเปลี่ยนจาก Gemma-2 เปลี่ยนตรงนี้แหละครับ เปลี่ยนเป็น phi-3.5 ครับ

แต่ในๆ อื่นเราสามารถที่จะเช็กว่า เรา install ตัวของ Ollama แล้วหรือยัง เราสามารถพิมพ์ command ว่า Ollama ครับ

ซึ่ง Ollama พอเราพิมพ์ Ollama ปุ๊บ มันก็จะโชว์ command ทุกๆ command ที่เราสามารถใช้นั่นเองนะครับ แล้วก็ถ้าสมมุติว่าเราอยากจะ list ว่า ตัวโมเดลมันมีตัวไหนบ้างนะครับ เราก็สามารถพิมพ์ว่า Ollama ls ครับ มันก็จะบอกเลยครับว่า เรามีโมเดลตัวไหนบ้างครับ อย่างเช่นตอนนี้ผมมี phi-3.5 มี Gemma-2 ที่เป็น 2 พันล้านพารามิเตอร์ แล้วก็ตัว Nomic นะครับ

Demo: RAG (Retrieval Augmented Generation) กับไฟล์ CSV18:34

ที่ช่วยในเรื่องของ embed text นะครับ ซึ่งตอนนี้ผมเขียนตัว 𝚐𝚎𝚗𝚎𝚛𝚊𝚝𝚎𝟷.𝚓𝚜 เสร็จแล้วนะครับ ผมก็ทำการ run ตัว bun ใช้คำสั่ง bun เลยครับ ที่เป็น runtime แล้วก็ตามด้วยชื่อไฟล์ครับ

𝚐𝚎𝚗𝚎𝚛𝚊𝚝𝚎𝟷.𝚓𝚜 นะครับ ก็มันก็จะรอช่วงนึงครับ ให้มันปริ้นท์คำตอบออกมานั่นเองครับ ซึ่งพอเราใส่ output อย่างเดียวเนี่ย เดี๋ยวเรามาลุ้นกันว่า คำตอบที่ได้ออกมานี่จะเป็นยังไงนะครับ ก็คำตอบที่ได้ออกมามันจะเป็นไฟล์คล้ายๆ structure ของ JSON นั่นเองครับ ซึ่งมันจะบอกเลยครับว่า model ที่เราใช้เนี่ย ใช้ตัวอะไรนะครับ แล้ว create เมื่อไหร่ แล้วก็มันก็จะบอกครับ response อยู่ที่ response มันคืออะไรประมาณนี้นะครับ แล้วแน่นอนครับมันก็จะมี evaluation count แล้วก็ตัว prompt count นั่นเองครับ

ถ้าผมเปลี่ยนเป็น 𝚘𝚞𝚝𝚙𝚞𝚝.𝚛𝚎𝚜𝚙𝚘𝚗𝚜𝚎 นะครับ

แล้วเรามาลอง run อีกรอบนึงครับ

sorry ครับ โอเคครับ รอสักครู่ครับ

ซึ่งมันก็จะใช้ตัว resource ภายในเครื่อง แล้วก็เอามาประมวลผลนั่นเองครับ มันก็จะได้เป็น 2 + 5 = 7 ก็ถูกนะครับ

สมมุติว่าผม code ตัว rag นะครับ ตัว rag เองใน demo วันนี้นะครับ ก็จะเป็นตัว rag ภายใต้ไฟล์ของ CSV นะครับ ซึ่งผมก็จะ import ตัว 𝚏𝚜 ออกมา แล้วก็ตัวของ openai ครับ แล้วก็อาจจะมีการ set ในเรื่องของ question ว่า Prius รุ่นไหนเร็วที่สุดอะไรประมาณนั้นนะครับ แล้วก็แน่นอนครับ ผมต้องดึงข้อมูลจากตัวไฟล์ CSV ที่เป็นตัว hybrid CSV ก็ตัว structure ไฟล์มันก็จะประมาณนี้ครับ แล้วก็คั่นด้วย comma อะไรประมาณนั้นนะครับ แล้วก็ตัวของ result ออกมาเนี่ย

ผมอยากจะออกมาเป็น markdown แล้วก็ผมก็จะอิงตัวของ openai นะครับ

เอามา run แต่ว่าคำถามคือ มีคนอาจจะสงสัยว่าถ้าเรารันของ openai ด้วยเนี่ย เราจะต้องใส่ API key ด้วยไหมครับ คำตอบคือเราไม่จำเป็นที่จะต้องใส่ตัว API key นะครับ แล้วก็ใส่ตัว base URL แล้วก็ API key ก็เขียนว่า no needed by Ollama นะครับ แล้วก็ตัว structure ที่สร้างเนี่ย มันก็จะประมาณนี้นะครับผม พอเรามารันนะครับ เราก็สามารถใส่คำสั่งได้เลยครับว่า bun sample

ผมใส่ในไฟล์ sample ครับ

แล้วก็ขีดด้วย 07 𝚛𝚊𝚐.𝚝𝚜 ครับ

มันก็ไฟล์ spec map นะครับ แล้วก็มาตอบครับว่า fastest Prius คือเท่าไหร่ แล้วมันก็จะตอบว่า accelerate time อยู่ที่ 8.82 ซึ่งเป็นรุ่นของ Prius PHV นะครับ from 2012

อะไรประมาณนั้นนะครับ

Demo: Streaming Response ใน Browser22:16

ถ้าสมมุติว่าเราอยากดูตัว streaming ใน browser นะครับ ก็เราก็ set ประมาณนี้ครับ

แล้วก็เราลองเล่นกับมันนะครับ อย่างเช่น bun sample ครับ

แล้วก็เป็น 04 𝚜𝚝𝚛𝚎𝚊𝚖.𝚝𝚜 นะครับ

แล้วมันก็ค่อยๆ พิมพ์อะไรประมาณนี้นะครับ เราใช้คำสั่งว่า say hello in pirate state ก็ ahoy อะไรประมาณนั้นครับ

Demo: สรุปไฟล์ TXT ด้วย Summarizer22:55

แล้วก็จริงๆ เราเองก็สามารถที่จะ develop ให้มันเป็นตัวโปรแกรมที่สามารถที่ summarize ตัวไฟล์ txt ได้นั่นเองครับ ก็สมมุติว่าเป็น run bun sample เป็น 06 ครับ 06-𝚜𝚞𝚖𝚖𝚊𝚛𝚒𝚣𝚎𝚛.𝚝𝚜 นะครับ

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

Key Takeaway: Python vs JavaScript สำหรับ AI Development23:29

เดี๋ยวเรามาคุยในเรื่องของ key takeaway กันก่อนนะครับ

ขอบคุณนะครับ โอเคครับ หลักๆ แล้วเนี่ย

มีคนก็จะตั้งคำถามว่าเวลาเรา develop เองเนี่ย เราจะเลือก python ดีหรือว่าจะเป็น javascript ดีนะครับ ซึ่งหลักๆ เองเนี่ย คือในเรื่องของ framework ในการ run AI ใน python เนี่ยค่อนข้างที่จะมี library มากกว่าครับ ส่วน javascript เนี่ยมันอาจจะแบบว่า มี framework ที่จะเอาไว้ run แบบว่าใน framework ที่เป็น web development ซะส่วนใหญ่นะครับ แต่ว่าถ้าเริ่มในเรื่องของ fundamental จริงๆ เนี่ย อยากจะให้เริ่มในฝั่งของ python นะครับ แต่ว่าจริงๆ แล้วเนี่ย ใน use case ของการใช้ javascript มันก็จะมีมากส่วนหนึ่งนั่นเองนะครับ

อนาคตของ Language Model และความน่าเชื่อถือ24:27

แล้วก็ผมอยากจะทิ้งท้ายว่า ณ trend ตอนนี้ครับว่า การ train language model หรือ large language model เนี่ย มันยังมีความสำคัญของมันอยู่หรือเปล่า ซึ่งจริงๆ แล้วผมมองว่า มันอาจจะมีความสำคัญบ้างนะครับ แต่ว่ามันอาจจะไม่สำคัญในอนาคต ซึ่งคำถามคือเขาจะไปดูในเรื่องไหนมากที่สุด เขาอาจจะไปดูในเรื่องของการตอบคำถาม หรือว่าวิธีการประมวลผลว่าทำไมมันถึงตอบอย่างนั้น ทำไมมันถึงทำงานอย่างนั้น อะไรประมาณนี้นะครับ แล้วก็แน่นอนครับ เราเองเราค่อนข้างที่จะไม่ค่อย trust ตัว answers ในตัวของ language model ซึ่งมันก็จะมีในเรื่องของ trustworthiness แล้วก็ responsible AI ที่จะเอามา develop มากยิ่งขึ้นนั่นเองนะครับ แน่นอนครับมันก็จะมีในเรื่องของ trend ในการใช้ small language model มากยิ่งขึ้นในอนาคตครับ แล้วก็ในเรื่องของ miniaturization ก็เราก็จะเพิ่มในเรื่องของ language fluency

แล้วก็ knowledge base ให้มันฉลาดมากยิ่งขึ้น ใน device ที่มีขนาดเล็กลง หรือว่าจะเป็นพวกแล็ปท็อปที่พวกเราใช้

หรือว่าจะบนสมาร์ตโฟนนั่นเองครับ

แนวโน้มของ Small Language Model และ Federated Learning25:37

ซึ่งในตัวของ research ของ Phi-3 ที่ออกมาเนี่ย เขาก็ได้ทดลองในการใช้ small language model บนมือถือ เนี่ยมันก็ค่อนข้างที่จะลื่นอยู่พอสมควรครับ และแน่นอนครับก็จะเป็นในเรื่องของ federated learning ก็จะ train จากตัวใหญ่ แล้วก็มากระจายมาสู่ตัวของเครื่อง device ที่มีขนาดเล็กหลายๆ เครื่องได้นั่นเองนะครับ

ทำไมคนไทยยังไม่ค่อยรู้จัก SLM26:05

และคำถามสุดท้ายก็คือ หลายคนอาจจะสงสัยว่าทำไมคนไทย หรือว่าหลายๆ คนที่อยู่แถวนี้ เราอาจจะยังไม่รู้จัก small language model ก็จะมีเหตุผลว่า ตัวประสิทธิภาพของมันมันอาจจะ hallucinate หรือว่าอาจจะเกิดอาการหลอนนะครับ หรือว่า performance อาจจะยังไม่ดีพอนะครับ หรือว่าตัว resources ของ device ซึ่งศักยภาพของเครื่องมันอาจจะรันไม่ได้แบบเต็มที่นะครับ แล้วก็แน่นอนครับเรื่อง language barrier เนี่ย บางทีเนี่ยมันอาจจะตอบภาษาไทยไม่รู้เรื่อง หรืออาจจะตอบใน context ที่ค่อนข้างที่จะผิด หรือว่าอันสุดท้ายเนี่ยคือเรื่องของ low engagement ก็อาจจะไม่ได้เล่าสู่กันฟังอย่างทั่วถึง

ซึ่งวันนี้เองเนี่ย ก็ผมเป็นตัวแทนของ Microsoft Learn Student Ambassadors เนี่ย ก็อยากจะมาแนะนำในเรื่องของการใช้ small language model

อยากให้ทุกคนได้ลองใช้แล้วก็ลองสนุกไปกับมันนั่นเองครับ

สรุปและช่องทางติดตาม27:02

ก็อยากจะฝากเรื่องราวเล็กๆ น้อยๆ จาก

ที่เรารู้อยู่แล้วเนี่ย เราก็มาเรียนรู้กันเพิ่มขึ้นนั่นเองนะครับ ก็สามารถที่จะ follow ผมใน Facebook แล้วก็สามารถที่จะ follow ใน Instagram ได้เช่นเดียวกันนะครับ ก็หลักๆ แล้วเนี่ยผมก็จะโยนตัวพวกข้อมูลต่างๆ พวกสิ่งที่ผม train หรือว่าในเรื่องของ tech ใหม่ๆ เนี่ยผมก็จะโพสต์ไม่ว่าจะเป็นช่องทางของ Facebook แล้วก็ทาง Instagram ซะส่วนใหญ่นั่นเองครับ แต่ว่าเวลาเขียนบล็อกเองเนี่ย ผมก็จะเขียนผ่าน Medium นะครับ

แล้วก็เรากลับไปดูที่ results นะครับ ก็พอเรารันตัว Bun ตัว sample ของ summarizer

มันก็จะดึงตัว text ที่ผมมีอยู่ในไฟล์ของ data ที่เป็น AI Wikipedia นะครับ แล้วมันก็สรุปเลยครับว่ามันมีอะไรบ้าง AI มีอะไรบ้างแล้วก็มันก็ไล่ๆ ตัวพวก section

ว่ามีอะไรบ้างพวก human rights AI อะไรประมาณนี้ครับ มันก็ list ออกมาเลยครับ ซึ่งจริงๆ แล้วเนี่ย ผมเองผมก็ set ว่า original text ก็จะมีอยู่ที่ 74,000 แล้วก็ summarize text ก็เห็นได้ชัดเลยครับ ว่ามันลดไปประมาณนึง ก็เหลือสัก 4,400 characters อะไรประมาณนั้นนั่นเองนะครับ ก็ session ผมมีประมาณนี้ ก็ขอบคุณทุกๆ คนที่มาและรับชมรับฟังครับผม ขอบคุณครับ

ขอบคุณน้องโบ๊ทมากเลยครับ