看到新聞寫聯發科釋出新的LLM模型,還可以做圖像處理或文件處理,
找到在 huggingface 上的model 和簡易的使用方法
https://huggingface.co/MediaTek-Research/Llama-Breeze2-3B-Instruct
https://huggingface.co/MediaTek-Research/Llama-Breeze2-8B-Instruct
但是實際上還需要補上不少的python 套件
如果是另外新建立 anaconda 的環境,
會需要再安裝 jupiter-notebook
#conda install jupiter-notebook
#conda install anaconda-navigator
#conda install conda-forge::jupyter anaconda::ipywidgets
文件說明需要 transformers
#conda install transformers
所有安裝指令
==================
#conda install conda-forge::pytorch-gpu
#conda install -c conda-forge libstdcxx-ng
#pip install mtkresearch
#conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch
#conda install pytorch::pytorch-cuda
#conda install timm einops
accelerate
==================
逐步解說
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
Cell In[2], line 3
1 from transformers import AutoModel, AutoTokenizer
2 from transformers import GenerationConfig
----> 3 import torch
4 from mtkresearch.llm.prompt import MRPromptV3
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/torch/__init__.py:367
365 if USE_GLOBAL_DEPS:
366 _load_global_deps()
--> 367 from torch._C import * # noqa: F403
370 class SymInt:
371 """
372 Like an int (including magic methods), but redirects all operations on the
373 wrapped node. This is used in particular to symbolically record operations
374 in the symbolic shape workflow.
375 """
ImportError: libtorch_cpu.so: cannot enable executable stack as shared object requires: Invalid argument
https://anaconda.org/conda-forge/pytorch-gpu
#conda install conda-forge::pytorch-gpu
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
Cell In[3], line 3
1 from transformers import AutoModel, AutoTokenizer
2 from transformers import GenerationConfig
----> 3 import torch
4 from mtkresearch.llm.prompt import MRPromptV3
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/torch/__init__.py:290
289 def _load_global_deps() -> None:
--> 290 if _running_with_deploy() or platform.system() == "Windows":
291 return
293 # Determine the file extension based on the platform
ImportError: /home/rexct/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/zmq/backend/cython/../../../../.././libstdc++.so.6: version GLIBCXX_3.4.30' not found (required by /home/rexct/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/torch/../../../libtorch_python.so)
#conda install -c conda-forge libstdcxx-ng
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
Cell In[2], line 4
2 from transformers import GenerationConfig
3 import torch
----> 4 from mtkresearch.llm.prompt import MRPromptV3
ModuleNotFoundError: No module named 'mtkresearch'
#pip install mtkresearch
--------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) Cell In[3], line 4 2 from transformers import GenerationConfig 3 import torch ----> 4 from mtkresearch.llm.prompt import MRPromptV3 File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/mtkresearch/llm/prompt.py:9 6 from datetime import datetime 7 from PIL import Image ----> 9 from mtkresearch.llm.image_process_v3 import load_image 12 def _removeprefix(content, prefix): 13 if sys.version_info[0] >= 3 and sys.version_info[1] >= 9: File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/mtkresearch/llm/image_process_v3.py:3 1 from PIL import Image 2 import torch ----> 3 import torchvision.transforms as T 4 from torchvision.transforms.functional import InterpolationMode 6 IMAGENET_MEAN = (0.485, 0.456, 0.406) ModuleNotFoundError: No module named 'torchvision'
到下列網頁看最新cudatoolkit 版本,
目前是11.8
https://anaconda.org/conda-forge/cudatoolkit
#conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch
如果出現以下錯誤,
表示 pytorch 和 torchvision 不合
RuntimeError Traceback (most recent call last)
Cell In[4], line 4
2 from transformers import GenerationConfig
3 import torch
----> 4 from mtkresearch.llm.prompt import MRPromptV3
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/mtkresearch/llm/prompt.py:9
6 from datetime import datetime
7 from PIL import Image
----> 9 from mtkresearch.llm.image_process_v3 import load_image
12 def _removeprefix(content, prefix):
13 if sys.version_info[0] >= 3 and sys.version_info[1] >= 9:
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/mtkresearch/llm/image_process_v3.py:3
1 from PIL import Image
2 import torch
----> 3 import torchvision.transforms as T
4 from torchvision.transforms.functional import InterpolationMode
6 IMAGENET_MEAN = (0.485, 0.456, 0.406)
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/torchvision/__init__.py:10
7 # Don't re-order these, we need to load the _C extension (done when importing
8 # .extensions) before entering _meta_registrations.
9 from .extension import _HAS_OPS # usort:skip
---> 10 from torchvision import _meta_registrations, datasets, io, models, ops, transforms, utils # usort:skip
12 try:
13 from .version import __version__ # noqa: F401
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/torchvision/_meta_registrations.py:163
153 torch._check(
154 grad.dtype == rois.dtype,
155 lambda: (
(...)
158 ),
159 )
160 return grad.new_empty((batch_size, channels, height, width))
--> 163 @torch.library.register_fake("torchvision::nms")
164 def meta_nms(dets, scores, iou_threshold):
165 torch._check(dets.dim() == 2, lambda: f"boxes should be a 2d tensor, got {dets.dim()}D")
166 torch._check(dets.size(1) == 4, lambda: f"boxes should have 4 elements in dimension 1, got {dets.size(1)}")
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/torch/library.py:654, in register_fake.<locals>.register(func)
652 else:
653 use_lib = lib
--> 654 use_lib._register_fake(op_name, func, _stacklevel=stacklevel + 1)
655 return func
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/torch/library.py:154, in Library._register_fake(self, op_name, fn, _stacklevel)
151 else:
152 func_to_register = fn
--> 154 handle = entry.abstract_impl.register(func_to_register, source)
155 self._registration_handles.append(handle)
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/torch/_library/abstract_impl.py:31, in AbstractImplHolder.register(self, func, source)
25 if self.kernel is not None:
26 raise RuntimeError(
27 f"register_fake(...): the operator {self.qualname} "
28 f"already has an fake impl registered at "
29 f"{self.kernel.source}."
30 )
---> 31 if torch._C._dispatch_has_kernel_for_dispatch_key(self.qualname, "Meta"):
32 raise RuntimeError(
33 f"register_fake(...): the operator {self.qualname} "
34 f"already has an DispatchKey::Meta implementation via a "
(...)
37 f"register_fake."
38 )
40 if torch._C._dispatch_has_kernel_for_dispatch_key(
41 self.qualname, "CompositeImplicitAutograd"
42 ):
RuntimeError: operator torchvision::nms does not exist
先移除 torchvision
#conda uninstall torchvision
#conda uninstall pytorch
安裝指定版 torchvision
#conda install pytorch::torchvision=0.17.2
#conda install pytorch torchvision torchaudio conda-forge::
cudatoolkit=11.8 -c pytorch
執行檢查是否使用CUDA
import torch
torch.cuda.is_available()
有使用會輸出 True
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Cell In[8], line 4
2 from transformers import GenerationConfig
3 import torch
----> 4 from mtkresearch.llm.prompt import MRPromptV3
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/mtkresearch/llm/prompt.py:9
6 from datetime import datetime
7 from PIL import Image
----> 9 from mtkresearch.llm.image_process_v3 import load_image
12 def _removeprefix(content, prefix):
13 if sys.version_info[0] >= 3 and sys.version_info[1] >= 9:
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/mtkresearch/llm/image_process_v3.py:3
1 from PIL import Image
2 import torch
----> 3 import torchvision.transforms as T
4 from torchvision.transforms.functional import InterpolationMode
6 IMAGENET_MEAN = (0.485, 0.456, 0.406)
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/torchvision/__init__.py:6
0 <Error retrieving source code with stack_data see ipython/ipython#13598>
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/torchvision/_meta_registrations.py:25
20 return fn
22 return wrapper
---> 25 @register_meta("roi_align")
26 def meta_roi_align(input, rois, spatial_scale, pooled_height, pooled_width, sampling_ratio, aligned):
27 torch._check(rois.size(1) == 5, lambda: "rois must have shape as Tensor[K, 5]")
28 torch._check(
29 input.dtype == rois.dtype,
30 lambda: (
(...)
33 ),
34 )
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/torchvision/_meta_registrations.py:18, in register_meta.<locals>.wrapper(fn)
17 def wrapper(fn):
---> 18 if torchvision.extension._has_ops():
19 get_meta_lib().impl(getattr(getattr(torch.ops.torchvision, op_name), overload_name), fn)
20 return fn
AttributeError: partially initialized module 'torchvision' has no attribute 'extension' (most likely due to a circular import)
可能是因為之前一直測試重複import,
重啟後這個問題就消失了
ImportError Traceback (most recent call last)
Cell In[2], line 2
1 model_id = 'MediaTek-Research/Llama-Breeze2-3B-Instruct-v0_1'
----> 2 model = AutoModel.from_pretrained(
3 model_id,
4 torch_dtype=torch.bfloat16,
5 low_cpu_mem_usage=True,
6 trust_remote_code=True,
7 device_map='auto',
8 img_context_token_id=128212
9 ).eval()
11 tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True, use_fast=False)
13 generation_config = GenerationConfig(
14 max_new_tokens=2048,
15 do_sample=True,
(...)
19 eos_token_id=128009
20 )
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/transformers/models/auto/auto_factory.py:553, in _BaseAutoModelClass.from_pretrained(cls, pretrained_model_name_or_path, *model_args, **kwargs)
551 if has_remote_code and trust_remote_code:
552 class_ref = config.auto_map[cls.__name__]
--> 553 model_class = get_class_from_dynamic_module(
554 class_ref, pretrained_model_name_or_path, code_revision=code_revision, **hub_kwargs, **kwargs
555 )
556 _ = hub_kwargs.pop("code_revision", None)
557 cls.register(config.__class__, model_class, exist_ok=True)
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/transformers/dynamic_module_utils.py:540, in get_class_from_dynamic_module(class_reference, pretrained_model_name_or_path, cache_dir, force_download, resume_download, proxies, token, revision, local_files_only, repo_type, code_revision, **kwargs)
538 code_revision = revision
539 # And lastly we get the class inside our newly created module
--> 540 final_module = get_cached_module_file(
541 repo_id,
542 module_file + ".py",
543 cache_dir=cache_dir,
544 force_download=force_download,
545 resume_download=resume_download,
546 proxies=proxies,
547 token=token,
548 revision=code_revision,
549 local_files_only=local_files_only,
550 repo_type=repo_type,
551 )
552 return get_class_in_module(class_name, final_module, force_reload=force_download)
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/transformers/dynamic_module_utils.py:403, in get_cached_module_file(pretrained_model_name_or_path, module_file, cache_dir, force_download, resume_download, proxies, token, revision, local_files_only, repo_type, _commit_hash, **deprecated_kwargs)
401 for module_needed in modules_needed:
402 if not (submodule_path / f"{module_needed}.py").exists():
--> 403 get_cached_module_file(
404 pretrained_model_name_or_path,
405 f"{module_needed}.py",
406 cache_dir=cache_dir,
407 force_download=force_download,
408 resume_download=resume_download,
409 proxies=proxies,
410 token=token,
411 revision=revision,
412 local_files_only=local_files_only,
413 _commit_hash=commit_hash,
414 )
415 new_files.append(f"{module_needed}.py")
417 if len(new_files) > 0 and revision is None:
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/transformers/dynamic_module_utils.py:365, in get_cached_module_file(pretrained_model_name_or_path, module_file, cache_dir, force_download, resume_download, proxies, token, revision, local_files_only, repo_type, _commit_hash, **deprecated_kwargs)
362 raise
364 # Check we have all the requirements in our environment
--> 365 modules_needed = check_imports(resolved_module_file)
367 # Now we move the module inside our cached dynamic modules.
368 full_submodule = TRANSFORMERS_DYNAMIC_MODULE_NAME + os.path.sep + submodule
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/transformers/dynamic_module_utils.py:197, in check_imports(filename)
194 raise
196 if len(missing_packages) > 0:
--> 197 raise ImportError(
198 "This modeling file requires the following packages that were not found in your environment: "
199 f"{', '.join(missing_packages)}. Run `pip install {' '.join(missing_packages)}`"
200 )
202 return get_relative_imports(filename)
ImportError: This modeling file requires the following packages that were not found in your environment: timm, einops. Run `pip install timm einops`
#conda install timm einops
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
Cell In[3], line 2
1 model_id = 'MediaTek-Research/Llama-Breeze2-3B-Instruct-v0_1'
----> 2 model = AutoModel.from_pretrained(
3 model_id,
4 torch_dtype=torch.bfloat16,
5 low_cpu_mem_usage=True,
6 trust_remote_code=True,
7 device_map='auto',
8 img_context_token_id=128212
9 ).eval()
11 tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True, use_fast=False)
13 generation_config = GenerationConfig(
14 max_new_tokens=2048,
15 do_sample=True,
(...)
19 eos_token_id=128009
20 )
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/transformers/models/auto/auto_factory.py:559, in from_pretrained(cls, pretrained_model_name_or_path, *model_args, **kwargs)
557 else:
558 cls.register(config.__class__, model_class, exist_ok=True)
--> 559 return model_class.from_pretrained(
560 pretrained_model_name_or_path, *model_args, config=config, **hub_kwargs, **kwargs
561 )
562 elif type(config) in cls._model_mapping.keys():
563 model_class = _get_model_class(config, cls._model_mapping)
File ~/.conda/envs/mtk-breeze2/lib/python3.12/site-packages/transformers/modeling_utils.py:3318, in PreTrainedModel.from_pretrained(cls, pretrained_model_name_or_path, config, cache_dir, ignore_mismatched_sizes, force_download, local_files_only, token, revision, use_safetensors, *model_args, **kwargs)
3314 raise ValueError(
3315 "DeepSpeed Zero-3 is not compatible with `low_cpu_mem_usage=True` or with passing a `device_map`."
3316 )
3317 elif not is_accelerate_available():
-> 3318 raise ImportError(
3319 "Using `low_cpu_mem_usage=True` or a `device_map` requires Accelerate: `pip install accelerate`"
3320 )
3322 # handling bnb config from kwargs, remove after `load_in_{4/8}bit` deprecation.
3323 if load_in_4bit or load_in_8bit:
ImportError: Using `low_cpu_mem_usage=True` or a `device_map` requires Accelerate: `pip install accelerate`
#conda install accelerate
FlashAttention2 is not installed.
#conda install pytorch::pytorch-cuda
可能會遇到相依性問題,
找出樹狀圖中的 cuda-toolkit 版本,
到下列網址中複製對應的版本執行
https://anaconda.org/nvidia/cuda-toolkit
#conda install nvidia/label/cuda-12.4.1::cuda-toolkit
#conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch
參考:
https://ithelp.ithome.com.tw/articles/10282119
https://stackoverflow.com/questions/48152674/how-do-i-check-if-pytorch-is-using-the-gpu