Nuitka: transformers, torch fail with triton installed, giving `OSError: could not get source code` in `triton` when importing `peft`
When importing peft executable is created, but when running it, It throws:
OSError: could not get source code
and exits.
Full log:
False
/tmp/onefile_10990_1700048433_451408/bitsandbytes/cextension.py:34: UserWarning: The installed version of bitsandbytes was compiled without GPU support. 8-bit optimizers, 8-bit m
ultiplication, and GPU quantization are unavailable.
'NoneType' object has no attribute 'cadam32bit_grad_fp32'
Traceback (most recent call last):
File "/tmp/onefile_10990_1700048433_451408/triton_reproduce.py", line 7, in <module>
from peft import AutoPeftModelForCausalLM, AutoPeftModelForSeq2SeqLM
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "/tmp/onefile_10990_1700048433_451408/peft/__init__.py", line 22, in <module peft>
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "/tmp/onefile_10990_1700048433_451408/peft/auto.py", line 30, in <module peft.auto>
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "/tmp/onefile_10990_1700048433_451408/peft/mapping.py", line 20, in <module peft.mapping>
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "/tmp/onefile_10990_1700048433_451408/peft/peft_model.py", line 39, in <module peft.peft_model>
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "/tmp/onefile_10990_1700048433_451408/peft/tuners/__init__.py", line 21, in <module peft.tuners>
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "/tmp/onefile_10990_1700048433_451408/peft/tuners/lora.py", line 42, in <module peft.tuners.lora>
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "/tmp/onefile_10990_1700048433_451408/bitsandbytes/__init__.py", line 16, in <module bitsandbytes>
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "/tmp/onefile_10990_1700048433_451408/bitsandbytes/nn/__init__.py", line 6, in <module bitsandbytes.nn>
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "/tmp/onefile_10990_1700048433_451408/bitsandbytes/nn/triton_based_modules.py", line 8, in <module bitsandbytes.nn.triton_based_modules>
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "/tmp/onefile_10990_1700048433_451408/bitsandbytes/triton/dequantize_rowwise.py", line 10, in <module bitsandbytes.triton.dequantize_rowwise>
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "/tmp/onefile_10990_1700048433_451408/triton/__init__.py", line 29, in <module triton>
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "/tmp/onefile_10990_1700048433_451408/triton/language/__init__.py", line 8, in <module triton.language>
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "/tmp/onefile_10990_1700048433_451408/triton/language/libdevice.py", line 4, in <module triton.language.libdevice>
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "/tmp/onefile_10990_1700048433_451408/triton/language/core.py", line 1175, in <module triton.language.core>
File "/tmp/onefile_10990_1700048433_451408/triton/runtime/jit.py", line 419, in jit
File "/tmp/onefile_10990_1700048433_451408/triton/runtime/jit.py", line 412, in decorator
File "/tmp/onefile_10990_1700048433_451408/triton/runtime/jit.py", line 306, in __init__
File "/tmp/onefile_10990_1700048433_451408/inspect.py", line 1262, in getsource
File "/tmp/onefile_10990_1700048433_451408/inspect.py", line 1244, in getsourcelines
File "/tmp/onefile_10990_1700048433_451408/inspect.py", line 1081, in findsource
OSError: could not get source code
I believe that the relevant source line is: https://github.com/openai/triton/blob/728282b11eebca01a64853d251b9fa9af0afe8f1/python/triton/runtime/jit.py#L585C44-L585C53
Reproduce details as guided:
- Nuitka version, full Python version, flavor, OS, etc. as output by this exact command.
1.9rc6
Commercial: 2.3.2
Python: 3.11.6 (main, Oct 19 2023, 12:55:47) [GCC 5.4.0 20160609]
Flavor: pyenv
Executable: /root/.pyenv/versions/3.11.6/bin/python
OS: Linux
Arch: x86_64
Distribution: Ubuntu (based on Debian) 16.04.7
Version C compiler: /usr/lib/ccache/gcc (gcc 5.4.0).
We must use staging version until some other issues are merged.
- How did you install Nuitka and Python
pip install Nuitka-commercial-staging.zipno virtualenv.
The specific PyPI names and versions
``` accelerate==0.20.3 aiohttp==3.8.5 aiosignal==1.3.1 async-timeout==4.0.3 attrs==23.1.0 backoff==2.2.1 bitsandbytes==0.41.1 certifi==2023.7.22 charset-normalizer==3.2.0 click==8.1.7 cmake==3.27.7 datasets==2.14.5 Deprecated==1.2.14 dill==0.3.7 einops==0.6.1 filelock==3.12.4 frozenlist==1.4.0 fsspec==2023.6.0 googleapis-common-protos==1.60.0 grpc-interceptor==0.15.3 grpcio==1.58.0 grpcio-reflection==1.58.0 grpcio-status==1.58.0 grpcio-tools==1.51.1 hf_transfer==0.1.3 huggingface-hub==0.16.4 idna==3.4 Jinja2==3.1.2 lit==17.0.5 loguru==0.6.0 MarkupSafe==2.1.3 mpmath==1.3.0 multidict==6.0.4 multiprocess==0.70.15 mypy-protobuf==3.4.0 networkx==3.1 Nuitka @ file:///python-packages/Nuitka-commercial-staging.zip#sha256=77333731fa0274fbabcc4f7a959c57903a7bd800e563f761ed318f0c54676c5e numpy==1.26.0 nvidia-cublas-cu11==11.10.3.66 nvidia-cuda-cupti-cu11==11.7.101 nvidia-cuda-nvrtc-cu11==11.7.99 nvidia-cuda-runtime-cu11==11.7.99 nvidia-cudnn-cu11==8.5.0.96 nvidia-cufft-cu11==10.9.0.58 nvidia-curand-cu11==10.2.10.91 nvidia-cusolver-cu11==11.4.0.1 nvidia-cusparse-cu11==11.7.4.91 nvidia-nccl-cu11==2.14.3 nvidia-nvtx-cu11==11.7.91 opentelemetry-api==1.15.0 opentelemetry-exporter-otlp==1.15.0 opentelemetry-exporter-otlp-proto-grpc==1.15.0 opentelemetry-exporter-otlp-proto-http==1.15.0 opentelemetry-instrumentation==0.36b0 opentelemetry-instrumentation-grpc==0.36b0 opentelemetry-proto==1.15.0 opentelemetry-sdk==1.15.0 opentelemetry-semantic-conventions==0.36b0 ordered-set==4.1.0 packaging==23.1 pandas==2.1.1 peft==0.4.0 Pillow==10.0.1 protobuf==4.24.3 psutil==5.9.5 pyarrow==13.0.0 python-dateutil==2.8.2 pytz==2023.3.post1 PyYAML==6.0.1 regex==2023.8.8 requests==2.31.0 safetensors==0.3.3 scipy==1.11.2 sentencepiece==0.1.99 six==1.16.0 sympy==1.12 -e git+ssh://git@github.com/huggingface/text-generation-inference.git@a5def7c222174e03d815f890093584f3e815c5ce#egg=text_generation_server&subdirectory=server texttable==1.6.7 tokenizers==0.13.3 torch==2.0.1 tqdm==4.66.1 transformers==4.33.2 triton==2.0.0 typer==0.6.1 types-protobuf==4.24.0.4 typing_extensions==4.8.0 tzdata==2023.3 urllib3==2.0.5 wrapt==1.15.0 xxhash==3.3.0 yarl==1.9.2 zstandard==0.22.0 ```pythonOther programs do work. even those which includes datasets and evaluate.
- Also supply a Short, Self Contained, Correct, Example
import os
import json
from loguru import logger
import torch
from transformers import AutoTokenizer
from peft import AutoPeftModelForCausalLM, AutoPeftModelForSeq2SeqLM
def download_and_unload_peft(model_id):
torch_dtype = torch.float16
logger.info("Peft model detected.")
logger.info("Loading the model it might take a while without feedback")
try:
model = AutoPeftModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch_dtype,
trust_remote_code=True,
low_cpu_mem_usage=True,
)
except Exception:
model = AutoPeftModelForSeq2SeqLM.from_pretrained(
model_id,
torch_dtype=torch_dtype,
trust_remote_code=True,
low_cpu_mem_usage=True,
)
logger.info("Loaded.")
logger.info("Merging the lora weights.")
base_model_id = model.peft_config["default"].base_model_name_or_path
model = model.merge_and_unload()
os.makedirs(model_id, exist_ok=True)
cache_dir = model_id
logger.info(f"Saving the newly created merged model to {cache_dir}")
tokenizer = AutoTokenizer.from_pretrained(base_model_id)
model.save_pretrained(cache_dir, safe_serialization=True)
model.config.save_pretrained(cache_dir)
tokenizer.save_pretrained(cache_dir)
download_and_unload_peft("ybelkada/opt-350m-lora")
- Provide in your issue the Nuitka options used
python -m nuitka --main=triton_reproduce.py --standalone --onefile --static-libpython=no --include-distribution-met
adata=accelerate --include-distribution-metadata=bitsandbytes --include-distribution-metadata=datasets --include-distribution-metadata=jinja2 --include-distribution-metadata=pand
as --include-distribution-metadata=psutil --include-distribution-metadata=safetensors --include-distribution-metadata=torch --include-distribution-metadata=tqdm --include-distrib
ution-metadata=transformers --include-distribution-metadata=huggingface-hub --include-distribution-metadata=scipy --include-distribution-metadata=tokenizers --include-distributio
n-metadata=protobuf --include-distribution-metadata=peft --noinclude-unittest-mode=allow
About this issue
- Original URL
- State: closed
- Created 8 months ago
- Comments: 23 (17 by maintainers)
I have successfully removed
tritonfrombitsandbytesas well, and found missing DLLs for it, that I am still working on, somehow maybe there is a bug, with my DLL pattern not matching although they should.So, I am compiling with
bitsandbytesand finding and removingtritonusages there as well, not sure how many iterations it will take, but hopefully it’s not too bad.Ah yes, optional dependencies, got to love these people really hard.
So, transformers is asking me for more metadata to be included now, this test case clearly covers more than others in terms of what’s used, but we are getting there I guess. I am trying to have 1.9.2 released with this, assuming it is only about this kind of work.
I’m not sure what that means. I assumed you referred the
--include-distribution-metadataargs so I dropped them and it fails on runtime withNuitka: Need to use this as an option to compile with '--include-distribution-metadata=bitsandbytes'3. After re compiling with all '–include-distribution-metadata`s, original runtime error persists 😢: