ONNX в MQL5 - страница 2

 
Edgar Akhmadeev # :
Так мне залить модели на 7 Гб в облако и дать ссылку , или Вы предложите свой вариант, как передать их?
Пожалуйста, сделайте это.
 

Я пытаюсь научиться работать с большими моделями в MQL5, чтобы не использовать внешние сервера и Python. С запуском моделей вне MT проблем нет, я запускал модели до 25 Гб, только не ONNX, а GGUF.

Когда MT стал поддерживать загрузку в GPU, я заинтересовался ONNX.

 
Alain Verleyen #:
Пожалуйста, сделайте это.
Загрузил и передал ссылки сообщением.
 
Edgar Akhmadeev #:
ONNX_LOGLEVEL_VERBOSE и ONNX_ENABLE_PROFILING не работают (игнорируются).
Подтверждено и доведено до сведения MQ.
 
Edgar Akhmadeev # :

ONNX_LOGLEVEL_VERBOSE and ONNX_ENABLE_PROFILING are not working (ignored). Part-bearing code - for example https://forge.mql5.io/renat/ONNX.Price.Prediction

Change if(! OnnxRun(handle,ONN_NO_NO_conVERSION,input_data))
on if(! OnnxRun(handle,ONN_NO_NO_CONVERSION | ONNX_ENABLE_PROFILING | ONNX_LOGLEEL_VERBOSE,input_data,output_data)))
and nothing will change

In fact, the flags work correctly, but they must be used with the function OnnxCreateFromBuffer().

long handle=OnnxCreateFromBuffer(ExtModel,ONNX_LOGLEVEL_VERBOSE|ONNX_ENABLE_PROFILING);
 
Alain Verleyen #:

In fact, the flags work correctly, but they must be used with the function OnnxCreateFromBuffer().

Это странно, по крайней мере уровень логирования должен работать с любой функцией Onnx*

Чья-то недоработка. Но я не могу спорить, поскольку не знаю, как ORT (Onnx Real Time) библиотека работает в C++.

 
Edgar Akhmadeev # :
Загрузил и передал ссылки сообщением.

Я воспроизвел ошибку, которая возникает при работе с более крупной моделью (ошибка 5800).

Поэтому я создал небольшой скрипт на Python для проверки моделей.

С файлом talker_prefill.onnx:

2026.02.10 15:52:27.460    Python    ONNX model is valid and runnable

С файлом talker_prefill2.onnx:

    model = onnx.load(path)            
    model = _get_serializer(format, f).deserialize_proto(_load_bytes(f), ModelProto())            
    decoded = typing.cast("int | None", proto.ParseFromString(serialized))            
                                        ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^            
 Error parsing message with type 'onnx.ModelProto'            

Похоже, что с моделью talker_prefill2.onnx что-то не так?

Файлы:
 
Alain Verleyen #:
Похоже, что с моделью talker_prefill2.onnx что-то не так

Похоже, действительно не так. Я в Python раньше не проверял, потому что не дружу с ним. Поскольку питон так же отказывается загружать эту модель, дело не в MT. Другая модель этого автора с таким же размером тоже не загружается. Там 20 моделей (по 10 для 0.6B и 1.7B), из них не загружается 2 самых больших.

Я решил проверить другие большие модели, но на Huggingface большие модели разбивают на куски: model.onnx + model.onnx_data. В главном файле есть строка "model.onnx_data", и питон загружает это дополнение, которое лежит рядом с главным файлом. Я попробовал загружать в MQL5, но он не видит дополнение, даже если файлы положить в корень папки Files:

ONNX: Exception during initialization: file_size: The system cannot find the file specified.: "model.onnx_data"

Если такую загрузку не разрешить, отпадают практически все большие мультимодальные модели, начиная с LLM. Конечно, сейчас MQ не до этого. Но, учитывая недавнее заявление о повышенном внимании к ONNX, следует отметить на будущее.

Alain, извиняюсь за ваше потраченное время с загрузкой файлов.

 
Alain Verleyen #:
In fact, the flags work correctly, but they must be used with the function OnnxCreateFromBuffer().

Однако, OnnxCreate() сообщает:

ONNX: Rerunning with verbose output on a non-minimal build will show node assignments.

Похоже, сборка для MT урезана, и флаги ONNX_LOGLEVEL_* и ONNX_ENABLE_PROFILING действительно игнорируются. Что может полезного дать последний, я не знаю. А LOGLEVEL нужен.

node assignments не стоит выводить, так что можно и сократить билд.

Но это, опять же, на будущее.

 

Edgar Akhmadeev # :

...

Alain, извиняюсь за ваше потраченное время с загрузкой файлов.

Не беспокойтесь. Именно поэтому я проверяю информацию, прежде чем сообщать об этом в MetaQuotes.