· kaynak dev.to (home feed)
Sheffield'in River Don nehri için WebGPU tabanlı taşkın dijital ikizi tamamen tarayıcıda çalışıyor
Bir geliştirici, Sheffield'in River Don nehri için WebGPU üzerinde render edilen ve yerel bir LLM'ı çalıştıran, sunucusuz, tek bir tarayıcı sekmesinde çalışan Don Watch adlı gerçek zamanlı taşkın dijital ikizini geliştirdi.

Tek tarayıcı sekmesinde bir taşkın ikizi
dev.to'da fortitudeomnis takma adıyla yazan bir geliştirici, Sheffield'in River Don nehri için GPU render ve yapay zeka çıkarımı dahil her şeyiyle, arkasında sunucu bulunmadan tamamen tek bir tarayıcı sekmesinde çalışan Don Watch adlı gerçek zamanlı dijital ikizi yayımladı. Gönderiye göre arazi, açık LIDAR yükseklik verilerinden yeniden oluşturuluyor, gerçek nehir yatağı bunun üzerine seriliyor ve araç, Environment Agency'nin kendi ölçüm istasyonu kayıtlarını kullanarak Kasım 2019 Sheffield selini saat saat yeniden oynatıyor. Zaman çizelgesini sürüklemek suyun kayıtlı seviyeleri takip etmesini sağlıyor; ayrıca canlı mod, EA'nın güncel izleme akışına karşı çalışıyor.
WebGPU üzerinde render
Arazi, su ve post-processing işlemlerinin tümü, three.js'in WebGPURenderer'ı üzerinden, el yazması GLSL yerine TSL ile (three.js'in node tabanlı gölgeleme dili) yazılmış shader'lar kullanılarak render ediliyor. Su, yalnızca dekoratif bir düzlem değil. Simülasyon, geçerli andaki ölçüm istasyonu yüksekliğini okuyor ve nehrin vertekslerinden dışa doğru bir genişlik öncelikli doldurma çalıştırarak yalnızca kanala bağlı zeminin taşmasına izin veriyor; böylece nehirden uzak izole çukurlar kuru kalıyor. Elde edilen yükseklik alanı, shader'ın hem yer değiştirme hem de derinlik için örneklediği bir dokuya yazılıyor.
Yazıda ayrıca bir kıyı çizgisi render hatası anlatılıyor: su ve arazi mesh'leri aynı yükseklik alanının farklı çözünürlüklerini kullandığı için su hizasında birbirine giriyordu ve bir depth-buffer bias'ı gerçekten kesişen yüzeyleri çözemedi. Düzeltme geometrikseldi — su yüzeyini her zaman zeminin üzerinde kalacak şekilde birkaç metre yükseltmek; yazar bu ofsetin sub-pixel olduğunu ve kamera mesafesinde görünmez olduğunu söylüyor.
Yapay zeka cihazda kalıyor
Başkalarının bulutunun önünde ince bir arayüz olmak yerine Don Watch, gönderiye göre bir ile iki milyar parametre arasında olan küçük bir açık kaynak dil modelini WebLLM aracılığıyla doğrudan tarayıcıya yüklüyor ve ziyaretçinin kendi GPU'sunda çalıştırıyor. Sunucu yok, API anahtarı yok, cihazdan çıkan hiçbir şey yok. Model tarayıcının origin-private depolaması olan OPFS'de önbelleğe alınıyor ve taşkın verisi sayfayla birlikte geliyor; bu yüzden ağı kesen bir düğme her şeyin çalışmaya devam etmesini sağlıyor. Modeli kaldıramayan cihazlar aynı arayüz arkasında komut dosyalı bir yedekme alıyor.
Hesaplayan değil, anlatan ajanlar
Sel oynarken beş küçük ajan çalışıyor: bir orkestratör, ölçüm istasyonu ve yağış verilerini okuyan iki veri alma ajanına görev dağıtıyor, bir tahmin ajanı ileriye projeksiyon yapıyor, bir risk ajanı suyun yolundaki noktaları sıralıyor ve bir iletişim ajanı sade bir dille brif taslağı hazırlıyor. Her adım canlı bir akıl yürütme akışına yazılıyor ve bir görev dağıtım grafiğini aydınlatıyor.
Yazarın en çok vurguladığı tasarım kararı, modele neyin yapılmasına izin verilmediği. Hidroloji, projeksiyonlar ve risk eşikleri tamamen deterministik TypeScript'te; dil modeli bu sonuçları okuyup yazıya döküyor ama asla sayıları üretmiyor. Gönderiye göre bu, güvenlik odaklı bir araçta bir LLM'ın dürüst rolü ve tüm projenin resmi bir sel uyarısı yerine karar desteği olarak çerçevelenmesinin nedeni.
Çevrimdışı çalışmak için tasarlandı
Don Watch, Next.js statik export olarak dağıtılıyor ve progressive web app olarak kuruluyor; service worker kabuğu, veriyi ve modeli önbelleğe alıyor — böylece bir kez yüklendikten sonra kısıtlı bir dizüstü bilgisayarda ya da bağlantısı olmayan bir saha ofisinde çalışmaya devam ediyor. Veri gerçek ve kaynaklı: ölçüm istasyonları ve yağış Environment Agency'den, nehir geometrisi, simge yapılar ve yer adları OpenStreetMap'ten, arazi açık yükseklik verilerinden, resmi sel uyarı bölgeleri ve canlı sensörler EA'nın flood-monitoring API'sinden geliyor. Bir veri serisi yeniden oluşturulduğunda, araç bunu açıkça belirtiyor.
Yazar ayrıca emeyle kazanılan bazı derslere değiniyor: gerçek sensör ağları seyrek; merkezi Sheffield yalnızca yoğun bir ızgara yerine bir avuç nehir seviyesi ölçüm istasyonuyla kapsanıyor ve bir sub-path statik export sunmak, her runtime fetch'inin basePath önekine ihtiyaç duyması demek. WebGPU render ve yerel LLM çıkarımını aynı sekmede çalıştırmak ayrıca ciddi bir GPU çekişmesi yaratıyor; bu, render döngüsünün yol verebilmesi için üretimin bölümlere ayrılmasıyla yönetiliyor.
Neden önemli
Don Watch, istemci tarafı yeteneklerin ne kadar ilerlediğine dair yararlı bir gösterge. WebGPU tarayıcıya GPU'ya neredeyse doğrudan erişim veriyor ve WebLLM gibi runtime'lar, kullanılabilir bir dil modelinin okurun zaten sahip olduğu donanımda çalışabileceği anlamına geliyor. Sıfır backend ile çalışan güvenlik odaklı bir uygulama — sel müdahalesi — pratik kazancı gösteriyor: API maliyeti yok, cihazdan çıkan veri yok ve sel çalışmalarının gerçekten gerçekleştiği bağlantısız ortamlarda çalışma. En az bunun kadar dikkat çekici olan mimari dürüstlük: deterministik kod hidrolojiyi hesaplıyor ve model yalnızca onu açıklıyor. Hem ciddi bir araçta LLM'ın nereye ait olduğuna dair bir şablon hem de tek bir tarayıcı sekmesinin artık neler barındırabileceğinin bir göstergesi olarak proje yakından incelenmeye değer.
- #webgpu
- #digital-twin
- #on-device-ai
- #webllm
- #three-js