1. نظرة عامة
في عالم الصناعات الخاضعة للرقابة والضرورية للمهام، تواجه المؤسسات مفارقة هائلة: كيف يمكن اعتماد الذكاء الاصطناعي المتطور لتحسين الإنتاج عندما تفرض سياسات الأمن السيبراني عدم وصول بياناتك إلى الإنترنت العام؟ يتم الفصل بين شبكات الإنترانت والإنترنت العام بشكل صارم، ولا يتداخلان أبدًا. في حين أنّ التصنيع الحديث يحتاج بشدة إلى الذكاء الاصطناعي التنبؤي لمنع الأعطال الكارثية في المعدات وتحسين الإنتاجية، فإنّ إرسال سجلات القياس عن بُعد الحساسة أو وصفات السبائك الحاصلة على براءة اختراع أو بيانات تخطيط موارد المؤسسات إلى Cloud APIs سحابية عامة هو أمر غير مقبول من الناحية العملية. لذلك، إذا لم يكن من الممكن نقل البيانات إلى السحابة الإلكترونية، يجب نقل السحابة الإلكترونية إلى البيانات.
في هذا الدرس التطبيقي حول الترميز، سنقدّم أدوات البيانات والذكاء الاصطناعي الأكثر تقدّمًا من Google Cloud مباشرةً في بيئات غير متصلة بالإنترنت وآمنة للغاية باستخدام Gemma 4 وAlloyDB Omni.
AlloyDB Omni: الخزنة المثالية للبيانات
يمكنك اعتبار AlloyDB Omni خزنة عالية الأداء. وهي قاعدة بيانات على مستوى المؤسسة ومستندة إلى حاويات يمكنك تنزيلها وتشغيلها بالكامل على شبكة الإنترانت الآمنة الخاصة بك.
- التكامل السلس: يتصل مباشرةً بأجهزة الاستشعار في المصنع (مثل VIM أو المكبس الثقيل) وأنظمة تخطيط موارد المؤسسات (ERP) المحلية (مثل Oracle R12).
- مساحة تخزين جاهزة للذكاء الاصطناعي: تخزّن أوراق العمليات السرية للغاية بأمان باستخدام تضمينات المتّجهات للبحث بالذكاء الاصطناعي (pgvector).
- الأداء: يتفوّق بشكل كبير على PostgreSQL العادي في كلّ من أعباء العمل الثقيلة للمعاملات والمعالجة التحليلية بالذكاء الاصطناعي.
مساعدة احترافية مستندة إلى الذكاء الاصطناعي المحلية: Gemma وTimesFM وTabFM
بدلاً من استخدام واجهات برمجة التطبيقات عن بُعد، يمكنك تنزيل نماذج ذات أوزان مفتوحة وتشغيلها على أجهزتك المحلية بدون أي تسرُّب في واجهة برمجة التطبيقات.
- Gemma: نموذج لغوي كبير مفتوح الأوزان من Google يعمل كخبير في البحث والتطوير. ويمكنه قراءة السجلات السابقة بأمان أو تحليل وصفات السبائك المعقدة الحاصلة على براءة اختراع للتنبؤ بالخصائص الميكانيكية.
- TimesFM (المتوقّع الرقمي): بما أنّ النماذج اللغوية الكبيرة قد تقدّم أحيانًا أرقامًا غير دقيقة، تتطلّب الآلات الثقيلة نموذجًا أساسيًا مخصّصًا للسلاسل الزمنية. يتوقّع TimesFM بدقة الآفاق الرقمية الطويلة المدى (ما يصل إلى 16,000 نقطة بيانات)، ويقرأ سجلّات الاهتزاز ودرجة الحرارة لتوقّع منحنيات تعطُّل المعدّات بدقة، وذلك بلا إنترنت بالكامل.
- TabFM (الاستدلال الجدولي): في حين أنّ النماذج اللغوية الكبيرة تعالج النصوص وTimesFM يعالج المؤشرات الرقمية، يتخصّص TabFM في الاستدلال على بيانات الجداول المنظَّمة. يمكنك تشغيلها بأمان في الموقع لإجراء تحليلات معقّدة والإجابة عن الأسئلة مباشرةً من بيانات ERP أو CRM الكثيفة والمتعدّدة الأعمدة بدون الحاجة إلى كتابة عمليات دمج SQL معقّدة.
حالة الاستخدام
الصيانة التوقّعية لمكبس تشكيل معادن بوزن 1500 طن:
ويؤدي توقّف هذه الآلات الضخمة عن العمل بشكل غير مخطّط له إلى توقّف الإنتاج، ما يضيّع الكثير من الوقت والمواد المهمة. في المقابل، غالبًا ما تؤدي الصيانة المجدولة إلى استبدال قطع غيار باهظة الثمن في وقت مبكر جدًا، ما يؤدي إلى إهدار الميزانية. نحتاج إلى الانتقال من الصيانة التفاعلية إلى الصيانة التنبؤية بدون كسر العزل المادي.

أهداف الدورة التعليمية
في هذا الدرس التطبيقي حول الترميز:
- ستستخدم AlloyDB Omni لتسجيل بيانات أجهزة استشعار الاهتزاز ودرجة الحرارة بشكل آمن على الجهاز، ويمكنك إضافة المزيد من المَعلمات لجعلها أكثر واقعية وفائدة.
- ستتعلّم كيفية استخدام Gemma لتحليل المؤشرات مقارنةً بسجلّات الأعطال السابقة.
- ستنشئ نظامًا يتوقّع الأعطال ويُنشئ تلقائيًا طلبات عمل وهمية لإدارة الأصول في نظام تخطيط موارد المؤسسات (ERP).
نعتمد على Docker لتوفير كل من النموذج اللغوي الكبير المحلي وAlloyDB Omni. تكمن ميزة هذا النهج في بساطته: يمكن لـ AlloyDB Omni إدارة عملية ML-Agent الداخلية تلقائيًا.
المتطلبات
- معرفة أساسية بلغة SQL
- جهاز افتراضي عادي يعمل بنظام التشغيل Linux (مثل Ubuntu 22.04) أو جهاز محلي (macOS/Windows) مثبَّت عليه Docker.
2. بدء استخدام النموذج اللغوي الكبير المحلي (Gemma 4)
سنستخدم Ollama لاستضافة Gemma على الجهاز. أنشئ ملف Dockerfile لضبط مثيل Ollama:
- من جهازك المحلي، نفِّذ الأوامر التالية في الوحدة الطرفية، واحدًا تلو الآخر:
mkdir -p gemma4-ollama && cd gemma4-ollama
cat << 'EOF' > Dockerfile
FROM ollama/ollama:latest
ENV OLLAMA_HOST=0.0.0.0:8080
ENV OLLAMA_MODELS=/root/.ollama
ENV MODEL=gemma4:e2b
RUN ollama serve & sleep 5 && ollama pull $MODEL
ENTRYPOINT ["ollama", "serve"]
EOF
- أنشئ الحاوية وشغِّلها على شبكة المضيف:
docker build -t gemma4-local .
docker run --network host -d -p 8080:8080 --name gemma4-ollama-instance gemma4-local
- يمكنك اختبار ذلك باستخدام الأمر:
curl -X POST http://localhost:8080/api/generate -d '{
"model": "gemma4:e2b",
"prompt": "Hello! Explain Gemma 4 in a few sentences."
}'
3- تثبيت AlloyDB Omni وبدء استخدامه
بعد ذلك، شغِّل حاوية قاعدة بيانات AlloyDB Omni، على شبكة المضيف أيضًا:
docker run -d \
--name my-omni \
--network host \
-e POSTGRES_PASSWORD=omni \
gcr.io/alloydb-omni/alloydbomni:18
إذا لم يتم العثور على صورة AlloyDB Omni من مشروعك على Google Cloud، حاوِل المصادقة من خلال تنفيذ الأمر قبل تنفيذ أمر docker run أعلاه:
gcloud auth login
بعد اكتمال المصادقة، حاوِل تنفيذ الأمر docker run مرة أخرى.
4. تفعيل وكيل تعلُّم الآلة الداخلي
تكون ميزات دمج تعلُّم الآلة في AlloyDB Omni غير مفعَّلة تلقائيًا. نحتاج إلى تعديل ملف postgresql.conf داخل الحاوية لتفعيل عملية ML-Agent الداخلية ومحرك طلبات البحث المستند إلى الذكاء الاصطناعي.
نفِّذ هذا الأمر الواحد لإلحاق العلامات اللازمة:
docker exec -it my-omni sh -c "cat << EOF >> /var/lib/postgresql/data/postgresql.conf
omni_enable_ml_agent_process = 'on'
google_ml_integration.enable_model_support = 'on'
google_ml_integration.enable_ai_query_engine = 'on'
EOF"
أعِد تشغيل الحاوية لتطبيق التغييرات:
docker restart my-omni
يمكنك البدء في اختبار طلبات البحث عن طريق بدء psql باستخدام الأمر:
docker exec -it my-omni psql -U postgres
5- توجيه الذكاء الاصطناعي إلى النموذج اللغوي الكبير المحلي
بعد الاتصال بقاعدة البيانات عبر psql (docker exec -it my-omni psql -U postgres)، يمكنك تسجيل النموذج المحلي غير المتصل بالشبكة. بدلاً من الاتصال بالإنترنت، يمكنك توجيه model_request_url إلى خادم Ollama المحلي الذي يعمل على المنفذ 8080.
نفِّذ عبارات SQL التالية من طلب psql في الوحدة الطرفية:
CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;
CALL google_ml.create_model(
model_id => 'gemma4:e2b',
model_request_url => 'http://localhost:8080/api/generate',
model_provider => 'custom',
model_type => 'generic'
);
يمكنك الآن استدعاء التوقّعات بأمان من داخل SQL:
SELECT google_ml.predict_row(
'gemma4:e2b',
'{"model": "gemma4:e2b", "prompt": "Why is the sky blue?", "stream": false}'
)->'response';
إخراج:

بعد أن اختبرنا ذلك على إطار اختبار عام، لنُدخل بيانات حالة الاستخدام في الصورة.
6. إنشاء مخطط واستيراد البيانات
لننتقل الآن إلى حالة الاستخدام من خلال إنشاء المخطط والبيانات المطلوبة للتوضيح.
نفِّذ عبارات SQL التالية من طلب psql في الوحدة الطرفية:
-- ==============================================================================
-- 1. Setup the Schema for the 1500T Forging Press
-- ==============================================================================
CREATE TABLE IF NOT EXISTS forging_press_logs (
log_id SERIAL PRIMARY KEY,
timestamp TIMESTAMP NOT NULL DEFAULT NOW(),
cycle_id VARCHAR(50) NOT NULL,
hyd_pressure_bar NUMERIC(5,2),
oil_temp_c NUMERIC(5,2),
vib_z_rms NUMERIC(5,2)
);
-- Clean up any existing data if running multiple times
TRUNCATE TABLE forging_press_logs;
-- ==============================================================================
-- 2. Generate 1,000 Records of Simulated Data
-- ==============================================================================
-- 99% of data is 'Normal'
INSERT INTO forging_press_logs (cycle_id, hyd_pressure_bar, oil_temp_c, vib_z_rms)
SELECT
'C-' || LPAD(i::text, 5, '0'),
280.0 + (random() * 10 - 5), -- Pressure around 280
42.0 + (random() * 5), -- Temp around 42-47
1.8 + (random() * 0.5) -- Vib Z around 1.8-2.3
FROM generate_series(1, 990) AS i;
-- 1% of data is 'Anomalous' (Hydraulic pressure drop & vibration spike)
INSERT INTO forging_press_logs (cycle_id, hyd_pressure_bar, oil_temp_c, vib_z_rms)
SELECT
'C-' || LPAD((990 + i)::text, 5, '0'),
250.0 + (random() * 5), -- Pressure dropping
55.0 + (random() * 5), -- Temp rising
5.0 + (random() * 1.5) -- High vibration
FROM generate_series(1, 10) AS i;
-- ==============================================================================
-- 3. Run the AI Prediction via AlloyDB Omni
-- ==============================================================================
-- Ensure the model is registered (assuming 'gemma4:e2b' is running locally on port 8080)
CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;
DO $$
BEGIN
CALL google_ml.create_model(
model_id => 'gemma4:e2b',
model_request_url => 'http://localhost:8080/api/generate',
model_provider => 'custom',
model_type => 'generic'
);
EXCEPTION WHEN OTHERS THEN
-- Ignore error if model already exists
END $$;
-- Query the most recent 5 potentially anomalous records and ask Gemma for an analysis
SELECT
cycle_id,
hyd_pressure_bar,
vib_z_rms,
google_ml.predict_row(
model_id => 'gemma4:e2b',
request_body => json_build_object(
'model', 'gemma4:e2b',
'stream', false,
'prompt', 'You are an industrial engineer. Analyze this sensor data from a 1500T forging press: Pressure=' || hyd_pressure_bar || ' bar, Vibration=' || vib_z_rms || ' mm/s. Normal pressure is ~280 bar and normal vibration is ~2.0 mm/s. Does this indicate a hydraulic failure? Answer in one short sentence.'
)
)->>'response' AS ai_analysis
FROM
forging_press_logs
WHERE
hyd_pressure_bar < 260 OR vib_z_rms > 4.5
ORDER BY
timestamp DESC
LIMIT 5;
يجب أن يؤدي تشغيل العبارات المذكورة أعلاه واحدة تلو الأخرى إلى النتيجة التالية:

بعد أن أصبحت بياناتنا جاهزة، لننتقل إلى إنشاء لوحة بيانات الصيانة التوقّعية.
7. إنشاء لوحة بيانات للبث المباشر
لتصوّر هذه البنية بشكل صحيح، يمكنك ربطها بسهولة بلوحة بيانات Python Flask، وهي تطبيق ويب.
بدلاً من تشغيل طلبات بحث SQL يدويًا، تعمل واجهة Flask الخلفية البسيطة على بث بيانات القياس عن بُعد لأدوات الاستشعار مباشرةً إلى لوحة بيانات HTML. أثناء العمليات العادية، ترسم لوحة البيانات الرسوم البيانية ببساطة.
ولكن عندما ترصد الخلفية قيمة شاذة (مثل انخفاض الضغط)، يشغّل رمز Python على الفور دالة google_ml.predict_row() داخل AlloyDB. يعيد AlloyDB توجيه السياق بسلاسة إلى نموذج Gemma على جهازك، وتظهر إحصاءات التشخيص المستندة إلى الذكاء الاصطناعي على لوحة البيانات في الوقت الفعلي.
💡 نصيحة بشأن الدرس التطبيقي حول الترميز: للخروج من حاوية قاعدة البيانات والعودة إلى سطر أوامر المضيف، اكتب \q واضغط على مفتاح Enter (أو افتح علامة تبويب جديدة في وحدة Terminal). بعد ذلك، انتقِل إلى تنفيذ أوامر تطبيق Flask أدناه.
ولإجراء ذلك:
- انتقِل إلى بيئة التطوير أو أداة تعديل الرموز وافتح الوحدة الطرفية
- نفِّذ الأمر التالي
pip install flask psycopg2-binary
- استنسِخ مستودع الرموز البرمجية في دليل مشروعك من خلال تنفيذ الأمر التالي في Cloud Shell Terminal:
git clone https://github.com/AbiramiSukumaran/gemma4-alloydb-omni-demo
- انتقِل إلى مجلد المشروع:
cd gemma4-alloydb-omni-demo
- شغِّل التطبيق:
python3 app.py
افتح متصفّح الويب أو انقر على الرابط المؤدي إلى التطبيق الذي يعمل في المضيف المحلي.

ما تمثّله "لوحة التحكّم في البث المباشر"
يعمل تطبيق Flask كلوحة مراقبة في الوقت الفعلي لآلة الكبس الهيدروليكي التي تزن 1500 طن، حيث يعرض كيفية تعامل نظام غير متصل بالإنترنت تمامًا ومعزول عن الشبكة مع الصيانة التنبؤية:
- تدفق بيانات القياس عن بُعد المستمر: ترسم لوحة البيانات سجلات الاهتزاز (ملم/ثانية) والضغط الهيدروليكي (بار) في الوقت الفعلي، ويتم تحديثها ديناميكيًا لمحاكاة عمليات أرضية المصنع النشطة.
- القيم الشاذة في قاعدة البيانات أثناء التشغيل: عندما ينخفض أحد أجهزة الاستشعار عن الحدّ الأدنى (على سبيل المثال، ينخفض الضغط عن 260 بار)، تضع الخلفية البرمجية في Python علامة على الحدث وتستدعي على الفور الدالة
google_ml.predict_row()داخل AlloyDB Omni. - بيانات التشخيص المحلية المستندة إلى الذكاء الاصطناعي: يعيد AlloyDB Omni توجيه السياق في الوقت الفعلي إلى نموذج Gemma 4 المحلي. يعمل Gemma كخبير صناعي في الموقع، حيث يحلّل بيانات القياس عن بُعد ويطبع تنبيهًا تشخيصيًا (مثل: "تحذير: يشير انخفاض الضغط والاهتزاز العالي إلى احتمال حدوث عطل في مانع التسرب الهيدروليكي") مباشرةً على لوحة البيانات.
- عدم تسرُّب البيانات: يتم تنفيذ جميع العمليات الحسابية وقواعد البيانات والرسومات البيانية واستدلال الذكاء الاصطناعي بالكامل على المضيف المحلي بدون الحاجة إلى الاتصال بالإنترنت.
8. مسار الإنتاج
لتوسيع نطاق هذه البنية من نموذج أوّلي محلي إلى نشر على مستوى الإنتاج في المصنع بدون التضحية بالأمان المعزول، يمكنك الاختيار من بين مسارَين عاديَين للتثبيت في الموقع:
الأجهزة الافتراضية في مرحلة الإنتاج والأجهزة المخصّصة (غير المستندة إلى حاويات):
بالنسبة إلى البيئات التي لا يُفضَّل فيها استخدام الحاويات أو التي تتطلّب سياسة الأمان فيها التكامل العميق مع نظام التشغيل المضيف، يمكنك النشر باستخدام حزمة AlloyDB Omni RPM الرسمية. بمساعدة أداة تنسيق AlloyDB Omni Red Hat RPM، يوفّر هذا النشر أداءً بزمن انتقال منخفض، وتوافقًا مع SELinux، وميزة "التوفّر العالي" (HA) المبرمَجة مباشرةً على أجهزة RHEL أو Rocky Linux الافتراضية المحلية بالكامل بلا إنترنت.
Production Kubernetes & HA:
إذا كانت البنية الأساسية لمصنعك تستخدم التنسيق المحلي، يمكنك نشر AlloyDB Omni على Kubernetes . باستخدام AlloyDB Omni Kubernetes Operator الرسمي، يمكنك نشر مجموعة قواعد بيانات قوية بشكل تعريفي مع نُسخ احتياطية متزامنة ونُسخ احتياطية محلية مبرمَجة ونقاط نهاية مخصّصة للقراءة فقط.
9. تهانينا!
بالنسبة إلى الصناعات الدفاعية والصناعات المعزولة عن الشبكة، لم يعُد الاختيار بين الأمان الصارم والابتكار التكنولوجي. من خلال نشر قواعد البيانات في حاويات، ونماذج الخوادم الوكيلة المتخصّصة، والذكاء الاصطناعي المفتوح المصدر على أجهزة سيادية، يمكنك تحويل مصنعك إلى مركز ذكي وتوقّعي، مع الحفاظ على أمان بياناتك الرقمية بالكامل.