2 คะแนน โดย GN⁺ 2024-08-19 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ALIEN คือสภาพแวดล้อมสิ่งมีชีวิตเทียมที่ใช้เอนจินอนุภาค 2D บนพื้นฐาน CUDA เพื่อจำลองซอฟต์บอดี ของไหล และสิ่งมีชีวิตดิจิทัลแบบเครือข่ายเซลล์ได้แบบเรียลไทม์
  • ร่างกายที่ใช้ในการจำลองประกอบด้วยเครือข่ายอนุภาค และสามารถเพิ่มฟังก์ชันระดับสูงอย่างเซนเซอร์ กล้ามเนื้อ อาวุธ และตัวสร้างได้ โดยมีโครงข่ายประสาทคอยประสานการทำงาน และบันทึกแบบแปลนไว้ในจีโนมเพื่อส่งต่อให้ลูกหลานได้
  • โค้ดจำลองทั้งหมดเขียนด้วย CUDA และปรับแต่งมาสำหรับการจำลองขนาดใหญ่แบบเรียลไทม์ที่จัดการอนุภาคได้หลายล้านตัว โดยการเรนเดอร์ใช้การทำงานร่วมกันระหว่าง CUDA-OpenGL
  • ผู้ใช้สามารถโต้ตอบกับการจำลองที่กำลังรันอยู่ และแก้ไขสิ่งมีชีวิตกับสภาพแวดล้อมได้ด้วยตัวแก้ไขกราฟ เครื่องมือวาดแบบอิสระ/เรขาคณิต ตัวแก้ไขจีโนม และงานแบบกลุ่ม
  • การรันต้องใช้ NVIDIA GPU ที่มี compute capability 6.0 ขึ้นไป และยังมี CLI สำหรับรันและประเมินผลการจำลองโดยไม่ใช้ GUI รวมอยู่ด้วย

สิ่งที่ ALIEN จำลอง

  • ALIEN ย่อมาจาก Artificial LIfe ENvironment และเป็นเครื่องมือสำหรับการจำลองสิ่งมีชีวิตเทียม
  • พื้นฐานคือเอนจินอนุภาค 2D แบบเฉพาะทางที่เขียนด้วย CUDA และออกแบบมาเพื่อจัดการซอฟต์บอดีกับของไหล
  • ร่างกายในการจำลองแต่ละตัวประกอบด้วยเครือข่ายอนุภาค
    • สามารถเพิ่มฟังก์ชันระดับสูงได้ตั้งแต่การประมวลผลข้อมูลล้วน ไปจนถึงอุปกรณ์ทางกายภาพอย่างเซนเซอร์ กล้ามเนื้อ อาวุธ และตัวสร้าง
    • การทำงานของฟังก์ชันเหล่านี้ถูกประสานโดยโครงข่ายประสาท
    • ร่างกายเหล่านี้มองได้ว่าเป็นเอเจนต์หรือสิ่งมีชีวิตดิจิทัลที่ทำงานอยู่ในสภาพแวดล้อมร่วมกัน
    • แบบแปลนจะถูกเก็บไว้ในจีโนมและสามารถส่งต่อไปยังลูกหลานได้
  • เป้าหมายการพัฒนาคือเพื่อทำความเข้าใจให้ดียิ่งขึ้นเกี่ยวกับวิวัฒนาการก่อนชีวภาพและเงื่อนไขที่ทำให้ความซับซ้อนของระบบชีวภาพเพิ่มขึ้น
  • อีกเป้าหมายสำคัญคือการสร้างซิมูเลเตอร์ที่ใช้งานง่าย ด้วย UI ทันสมัย การเรนเดอร์ที่ดูสวยงาม และแนวทางที่ให้ความรู้สึกเหมือนการเล่นมากกว่าเครื่องมือวิชาการล้วน

เอนจินฟิสิกส์และกราฟิก

  • อนุภาคถูกใช้เพื่อจำลองซอฟต์บอดี พลวัตวัตถุแข็ง ของไหล การปล่อยความร้อน ความเสียหาย และการยึดเกาะ เป็นต้น
  • รองรับการโต้ตอบของผู้ใช้แบบเรียลไทม์กับการจำลองที่กำลังทำงานอยู่
  • การจำลองทำงานทั้งหมดบน GPU ผ่าน CUDA
  • การเรนเดอร์และโพสต์โปรเซสใช้ OpenGL บนพื้นฐานการทำงานร่วมกันของ CUDA-OpenGL

ความสามารถด้านสิ่งมีชีวิตเทียม

  • สิ่งมีชีวิตหลายเซลล์ถูกจำลองเป็นเครือข่ายอนุภาค
  • รองรับระบบพันธุกรรมและการสร้างลูกหลานในระดับเซลล์
  • ฟังก์ชันระดับสูงอย่างเซนเซอร์และกล้ามเนื้อถูกควบคุมด้วยโครงข่ายประสาท
  • ผู้ใช้สามารถปรับแต่งประเภทของเซลล์ตามสเปกที่กำหนดเองได้ด้วยการใช้สีที่หลากหลาย
  • รองรับพารามิเตอร์การจำลองที่เปลี่ยนไปตามพื้นที่

เครื่องมือแก้ไขและการแชร์

  • เครื่องมือแก้ไขมุ่งเน้นไปที่การจัดการองค์ประกอบของการจำลองโดยตรง
    • สามารถจัดการอนุภาคและการเชื่อมต่อทั้งหมดได้ด้วยตัวแก้ไขกราฟ
    • มีเครื่องมือวาดแบบอิสระและแบบเรขาคณิต
    • สามารถออกแบบสิ่งมีชีวิตแบบกำหนดเองได้ด้วยตัวแก้ไขจีโนม
    • รองรับงานแบบกลุ่มและการซูม
  • ยังมีความสามารถด้านเครือข่ายรวมอยู่ด้วย
    • มีเบราว์เซอร์การจำลองในตัว
    • รองรับการดาวน์โหลดและอัปโหลดไฟล์การจำลอง
    • สามารถแนะนำการจำลองด้วยการให้ดาว

วัตถุประสงค์การใช้งาน

  • เมื่อเปิดใช้เครื่องจักรจำลองตัวเองและการกลายพันธุ์ การจำลองจะดำเนินไปได้ด้วยตัวเอง และผู้ใช้สามารถสังเกตการทำงานของวิวัฒนาการได้
  • สามารถใช้ได้เหมือนเกมที่มีเอนจินฟิสิกส์รวดเร็วและสมจริง
    • สามารถเร่งหรือทำลายเครื่องจักรนับแสนด้วยเคอร์เซอร์เมาส์
    • สไตล์การเรนเดอร์และตัวแก้ไขภาพที่หลากหลายช่วยให้สังเกตเหตุการณ์ต่าง ๆ ได้
    • ดูตัวอย่างได้ที่ YouTube channel
  • ในเชิงวิชาการ มันเป็นเครื่องมือสำหรับสำรวจว่าความซับซ้อนหรือโครงสร้างคล้ายสิ่งมีชีวิตสามารถเกิดขึ้นจากองค์ประกอบเรียบง่ายได้อย่างไร
    • วิธีที่ระบบนิเวศปรับตัวต่อการเปลี่ยนแปลงของสภาพแวดล้อมและหาสมดุลใหม่
    • ปัญหาเรื่องการค้นหาเงื่อนไขที่ทำให้วิวัฒนาการแบบปลายเปิดเป็นไปได้
  • ยังสามารถใช้เป็นเครื่องมือศิลปะเชิงกำเนิดได้ โดยวิวัฒนาการทำหน้าที่เป็นพลังสร้างสรรค์ที่สร้างรูปแบบและพฤติกรรมใหม่ ๆ

เอกสารและเงื่อนไขการรัน

  • เอกสารสำหรับเวอร์ชันหลักก่อนหน้านี้อยู่ที่ alien-project.gitbook.io/docs และแนะนำซิมูเลเตอร์ในรูปแบบบทความสอนใช้งาน
  • ข้อมูลจำนวนมากในเอกสารดังกล่าวไม่อัปเดตแล้ว
  • เวอร์ชันล่าสุดมีเอกสารย่อและคำแนะนำผู้ใช้ผ่านหน้าต่างช่วยเหลือและ tooltip ภายในโปรแกรม
  • แหล่งข้อมูลเพิ่มเติมมีที่ Website, YouTube, Twitter, Reddit, Discord
  • ข้อกำหนดขั้นต่ำของระบบคือการ์ดจอ NVIDIA ที่มี compute capability 6.0 ขึ้นไป
  • ตัวติดตั้งสำหรับ Windows คือ alien-installer.msi และตาม README วันที่อัปเดตคือ 2025-09-06

การบิลด์และ CLI

  • การบิลด์ซอร์สถูกทำให้เป็นอัตโนมัติเป็นส่วนใหญ่ด้วย CMake แบบข้ามแพลตฟอร์มและตัวจัดการแพ็กเกจ vcpkg ที่รวมมาเป็น Git submodule
  • เมื่อต้องการดึงซอร์ส จะต้องใช้ --recursive เพื่อเช็กเอาต์ submodule ของ vcpkg ด้วย
    • git pull แบบปกติมักจะไม่อัปเดต submodule ดังนั้นจึงควรใช้ git pull --recurse-submodules
  • ทั้ง Windows และ Linux ใช้ Ninja และคอมไพเลอร์ CUDA nvcc
    • ข้อกำหนดคือ CUDA Toolkit 11.2+
    • Windows ต้องมีคอมโพเนนต์ “Desktop development with C++” และ “C++ CMake tools for Windows” ของ Visual Studio
    • Linux ต้องมี GCC, ninja-build และไลบรารีพัฒนา X11/OpenGL
  • คำสั่งบิลด์คือ cmake --preset ninja และ cmake --build --preset ninja-release
  • ไฟล์ executable จะถูกสร้างใต้ build-ninja/Release/ และต้องรันจากโฟลเดอร์บิลด์โดยตรงเพื่อให้หาโฟลเดอร์ resource เจอ
  • ในรีโพซิทอรียังมี CLI สำหรับรันการจำลองโดยไม่มี GUI รวมอยู่ด้วย
    • ใช้สำหรับวัดประสิทธิภาพและรัน/ประเมินผลอัตโนมัติสำหรับพารามิเตอร์หลายแบบได้
    • อินพุตคือไฟล์การจำลอง พารามิเตอร์ และจำนวน time step
    • เอาต์พุตคือไฟล์การจำลองผลลัพธ์และไฟล์สถิติ CSV
    • ตัวอย่างคำสั่ง .\\cli.exe -i example.sim -o output.sim -t 1000 จะรัน example.sim เป็นเวลา 1000 time step

การแก้ปัญหาและไลเซนส์

  • หากเกิดการแครชโดยไม่ทราบสาเหตุ ควรตรวจสอบข้อกำหนดก่อน
    • ต้องมี NVIDIA GPU ที่มี compute capability 6.0 ขึ้นไป
    • ต้องติดตั้งไดรเวอร์กราฟิก NVIDIA เวอร์ชันล่าสุด
    • ชื่อไดเรกทอรีติดตั้งและชื่อไดเรกทอรีแม่ต้องไม่มีอักขระที่ไม่ใช่ภาษาอังกฤษ
    • บน Windows ชื่อผู้ใช้ Windows ที่ติดตั้ง ALIEN ก็ต้องไม่มีอักขระที่ไม่ใช่ภาษาอังกฤษเช่นกัน
    • ALIEN ต้องมีสิทธิ์เขียนในไดเรกทอรีของตัวเอง
    • หากมี GPU หลายตัว จอมอนิเตอร์หลักต้องเชื่อมต่อกับการ์ดที่รองรับ CUDA
    • หากใช้กราฟิกออนบอร์ดและการ์ดจอแยกร่วมกัน ต้องตั้งค่าให้ alien.exe ใช้การ์ดจอประสิทธิภาพสูง
  • หากตรงตามเงื่อนไขแล้วยังมีข้อผิดพลาดอยู่ ให้เริ่ม ALIEN ด้วยพารามิเตอร์บรรทัดคำสั่ง -d แล้วทำให้เกิดปัญหาซ้ำ จากนั้นแนบ log.txt เพื่อสร้าง GitHub issue
  • สามารถส่ง contribution ได้ผ่าน GitHub Issues, Pull requests, Discussion forum
  • ALIEN เผยแพร่ภายใต้ไลเซนส์ BSD 3-Clause

1 ความคิดเห็น

 
GN⁺ 2024-08-19
ความคิดเห็นจาก Hacker News
  • ข้อมูลที่อยากหาในตอนแรกกลับหาได้ยากกว่าที่คิด และวิดีโอบน GitHub ก็โหลดไม่ได้จากฝั่งผม เลยรวบรวมลิงก์ไว้:
    https://www.youtube.com/@alien-project/videos
    https://www.youtube.com/watch?v=qwbMGPkoJmg
    https://www.youtube.com/watch?v=w9R6zrdl6jM
    อีกอย่าง ยังไม่ชัดเจนทั้งหมดว่ามันจะทำงานบน Linux อย่างไร และมองเผิน ๆ ดูเหมือนจะจำกัดอยู่ที่การตั้งค่าแบบ Windows + NVidia หวังว่าจะมีใครยืนยันได้ว่าผมเข้าใจผิด

  • ถ้าอยากลองสร้างอะไรแบบนี้แต่ไม่รู้จะเริ่มตรงไหน ขอแนะนำ https://natureofcode.com/
    หนังสือนี้มุ่งเป้าไปที่ผู้เริ่มต้นและใช้ไลบรารี JS แต่ แนวคิดหลัก ที่พูดถึงนั้นนำไปใช้ได้ทั่วไป

    • ชื่อ Nature of Code ฟังดูเหมือนหนังสือที่ว่าด้วยแก่นแท้ของโค้ดเอง
      กลับกัน ผมคิดว่า The Code of Nature น่าจะฟังเป็นธรรมชาติกว่า
  • ผมปล่อยให้ซิมูเลชัน Alien รันยาว ๆ มาหลายเดือนแล้ว เปิด ๆ ปิด ๆ เครื่องตามว่าต้องใช้ PC หรือไม่
    เริ่มจากพรีเซ็ตค่าเริ่มต้น RGB Triad และสิ่งที่น่าทึ่งคือสิ่งมีชีวิตทั้งสามชนิดสร้างโครงสร้างซับซ้อนคล้ายเซลล์ด้วยวิธีที่แตกต่างกัน
    มีทั้งผลึกเรขาคณิต เส้นยาว ๆ ที่พยายามกินสิ่งอื่น และโครงสร้างเป็นหนามที่ก่อตัวเป็นกำแพง น่าหลงใหลมากจริง ๆ

    • องค์ประกอบด้านภาพก็สำคัญ แต่สงสัยว่าถ้า ข้ามการเรนเดอร์ จะทำให้รันซิมูเลชันได้เร็วขึ้นไหม
  • ยังจำเกม Flash ที่อนุภาคเล็ก ๆ แต่ละตัวมีพฤติกรรมเฉพาะของตัวเองได้อย่างดี
    อนุภาคแต่ละตัวสามารถชนกัน ทำปฏิกิริยา แปลงสภาพ หรือทำลายวัสดุอนุภาคอื่นได้ จำชื่อเว็บไซต์หรือชื่อเกมไม่ได้แล้ว แต่การได้ลองเล่นกับ การเล่นแบบเกิดพฤติกรรมใหม่เอง นั้นสนุกเสมอ

    • เกม Flash ที่ตรงกับคำอธิบายนี้และนึกออกทันทีคือ Powder Game[1] ถ้ากำลังมองหาเวอร์ชันที่ขยายใหญ่ขึ้นพร้อมธาตุและปฏิสัมพันธ์มากกว่านี้ ก็น่าลองดู The Powder Toy[2] ด้วย
      [1] https://dan-ball.jp/en/javagame/dust/
      [2] https://powdertoy.co.uk/
  • เว็บไซต์: https://alien-project.org/

  • น่าทึ่ง ชอบ cellular automata และ Conway's Game of Life อยู่แล้ว อันนี้ดูเหมือนจะเป็นเกมที่ใช้ได้เลย

  • ค่อนข้างเจ๋งเลย ดูจากที่มีบางคนกำลังพยายามรันอยู่ AMD ก็น่าจะมีความเป็นไปได้: https://github.com/chrxh/alien/issues/99

  • เจ๋งจนแทบหยุดหายใจ ดูวิดีโอไปสองสามอันแล้วนึกถึงซิมูเลเตอร์วิวัฒนาการชีวิตต่างดาวที่กำลังทำอยู่
    โปรแกรมแบบคอนโซลของผมยังอยู่ในระดับคลาน แต่โปรเจกต์นี้อยู่ในระดับ บินอยู่บนฟ้า เลย

  • ดูเท่ดี แต่ไม่รู้จริง ๆ ว่า การเลื่อนหน้าจอ ทำยังไงกันแน่