RuntimeError: не удалось импортировать преобразователи (объект «NoneType» не имеет атрибута «split») с Python 3.11, TensPython

Программы на Python
Ответить
Anonymous
 RuntimeError: не удалось импортировать преобразователи (объект «NoneType» не имеет атрибута «split») с Python 3.11, Tens

Сообщение Anonymous »

Я сталкиваюсь с критической ошибкой RuntimeError во время запуска моего приложения Dockerized FastAPI. Ошибка возникает, в частности, когда предложение_transformers пытается импортировать Transformers.models.auto.modeling_auto.
Похоже, это связано с проблемой синтаксического анализа переменных среды (

Код: Выделить всё

NoneType
не имеет разделения атрибутов), но я не могу точно определить, какая переменная вызывает сбой внутри библиотеки преобразователей.
Сведения о среде:
  • Python: 3.11 (работает в Docker)
  • TensorFlow: 2.15.0
  • tf-keras: 2.15.1
  • Трансформеры: 4.39.3
  • Преобразователи предложений: 2.7.0
  • Keras (автономный): Удален (я проверил, что в списке пунктов отображается только tf-keras).
Отслеживание ошибок:
Вышеупомянутое исключение было прямой причиной следующего исключения:

Код: Выделить всё

Traceback (most recent call last):

File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 694, in lifespan

async with self.lifespan_context(app) as maybe_state:

File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__

return await anext(self.gen)

^^^^^^^^^^^^^^^^^^^^^

File "/app/api_server.py", line 138, in lifespan

app.state.rag = get_rag()

^^^^^^^^^

File "/app/api_server.py", line 120, in get_rag

from modules.rag.graph import RAGPipeline

File "/app/modules/rag/__init__.py", line 3, in 

from .reranker import CrossEncoderReranker

File "/app/modules/rag/reranker.py", line 8, in 

from sentence_transformers import CrossEncoder

File "/usr/local/lib/python3.11/site-packages/sentence_transformers/__init__.py", line 3, in 

from .datasets import SentencesDataset, ParallelSentencesDataset

File "/usr/local/lib/python3.11/site-packages/sentence_transformers/datasets/__init__.py", line 3, in 

from .ParallelSentencesDataset import ParallelSentencesDataset

File "/usr/local/lib/python3.11/site-packages/sentence_transformers/datasets/ParallelSentencesDataset.py", line 4, in 

from .. import SentenceTransformer

File "/usr/local/lib/python3.11/site-packages/sentence_transformers/SentenceTransformer.py", line 38, in 

from .models import Transformer, Pooling, Normalize

File "/usr/local/lib/python3.11/site-packages/sentence_transformers/models/__init__.py", line 1, in 

from .Transformer import Transformer

File "/usr/local/lib/python3.11/site-packages/sentence_transformers/models/Transformer.py", line 2, in 

from transformers import AutoModel, AutoTokenizer, AutoConfig, T5Config, MT5Config

File "", line 1229, in _handle_fromlist

File "/usr/local/lib/python3.11/site-packages/transformers/utils/import_utils.py", line 1463, in __getattr__

value = getattr(module, name)

^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/transformers/utils/import_utils.py", line 1462, in __getattr__

module = self._get_module(self._class_to_module[name])

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/transformers/utils/import_utils.py", line 1474, in _get_module

raise RuntimeError(

RuntimeError: Failed to import transformers.models.auto.modeling_auto because of the following error (look up to see its traceback):

'NoneType' object has no attribute 'split'

ERROR: Application startup failed.  Exiting.
Что я пробовал до сих пор:
Я подозревал конфликт Keras 2 и Keras 3, поэтому удалил keras и сохранил tf-keras.
Я добавил следующие переменные среды в docker-compose.yml и явно внутри моего скрипта Python (os.environ):

Код: Выделить всё

os.environ["TRANSFORMERS_NO_TF"] = "1"
os.environ["TF_USE_LEGACY_KERAS"] = "1"
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"  # Suspected this was None, so I set it to -1
Я проверил, что список пунктов показывает tensorflow==2.15.0 и tf-keras==2.15.1.
Несмотря на то, что для CUDA_VISIBLE_DEVICES установлено значение «-1», ошибка сохраняется в той же строке импорта. Кто-нибудь знает, какие именно преобразователи переменных среды v4.39.3 анализируют с помощью .split(), которые могут возвращать None в среде Docker?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -attribute
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»