Iker commited on
Commit
d54a92e
1 Parent(s): 390a692

8 bits / 4 bits quantization, load any model, promoting.

Browse files
README.md CHANGED
@@ -13,17 +13,26 @@
13
  <br>
14
  </p>
15
 
16
- Easy-Translate is a script for translating large text files in your machine using the [M2M100 models](https://arxiv.org/pdf/2010.11125.pdf) and [NLLB200 models](https://research.facebook.com/publications/no-language-left-behind/) from Facebook/Meta AI. We also provide a [script](#evaluate-translations) for Easy-Evaluation of your translations 🥳
 
 
 
 
 
17
 
18
  Easy-Translate is built on top of 🤗HuggingFace's [Transformers](https://huggingface.co/docs/transformers/index) and 🤗HuggingFace's [Accelerate](https://huggingface.co/docs/accelerate/index) library.
19
 
 
20
  We currently support:
21
 
22
  - CPU / multi-CPU / GPU / multi-GPU / TPU acceleration
23
- - BF16 / FP16 / FP32 precision.
24
  - Automatic batch size finder: Forget CUDA OOM errors. Set an initial batch size, if it doesn't fit, we will automatically adjust it.
25
- - Sharded Data Parallel to load huge models sharded on multiple GPUs (See: <https://huggingface.co/docs/accelerate/fsdp>).
26
- - Greedy decoding / Beam Search decoding / Multinomial Sampling / Beam-Search Multinomial Sampling
 
 
 
27
 
28
  >Test the 🔌 Online Demo here: <https://huggingface.co/spaces/Iker/Translate-100-languages>
29
 
@@ -35,6 +44,9 @@ See the [Supported languages table](supported_languages.md) for a table of the s
35
 
36
  ## Supported Models
37
 
 
 
 
38
  ### M2M100
39
  **M2M100** is a multilingual encoder-decoder (seq-to-seq) model trained for Many-to-Many multilingual translation introduced in this [paper](https://arxiv.org/abs/2010.11125) and first released in [this](https://github.com/pytorch/fairseq/tree/master/examples/m2m_100) repository.
40
  >M2M100 can directly translate between 9,900 directions of 100 languages.
@@ -50,6 +62,8 @@ See the [Supported languages table](supported_languages.md) for a table of the s
50
  **No Language Left Behind (NLLB)** open-sources models capable of delivering high-quality translations directly between any pair of 200+ languages — including low-resource languages like Asturian, Luganda, Urdu and more. It aims to help people communicate with anyone, anywhere, regardless of their language preferences. It was introduced in this [paper](https://research.facebook.com/publications/no-language-left-behind/) and first released in [this](https://github.com/facebookresearch/fairseq/tree/nllb) repository.
51
  >NLLB can directly translate between +40,000 of +200 languages.
52
 
 
 
53
  - **facebook/nllb-200-3.3B**: <https://huggingface.co/facebook/nllb-200-3.3B>
54
 
55
  - **facebook/nllb-200-1.3B**: <https://huggingface.co/facebook/nllb-200-1.3B>
@@ -59,8 +73,6 @@ See the [Supported languages table](supported_languages.md) for a table of the s
59
  - **facebook/nllb-200-distilled-600M**: <https://huggingface.co/facebook/nllb-200-distilled-600M>
60
 
61
 
62
- Any other ModelForSeq2SeqLM from HuggingFace's Hub should work with this library: <https://huggingface.co/models?pipeline_tag=text2text-generation>
63
-
64
  ## Citation
65
  If you use this software please cite
66
  ````
@@ -82,17 +94,21 @@ If you use this software please cite
82
  ## Requirements
83
 
84
  ```
85
- Pytorch >= 1.10.0
86
  See: https://pytorch.org/get-started/locally/
87
 
88
  Accelerate >= 0.12.0
89
- pip install --upgrade accelerate
90
 
91
  HuggingFace Transformers
 
92
  pip install --upgrade transformers
93
 
94
- If you find errors using NLLB200, try installing transformers from source:
95
- pip install git+https://github.com/huggingface/transformers.git
 
 
 
96
  ```
97
 
98
  ## Translate a file
@@ -102,7 +118,7 @@ Run `python translate.py -h` for more info.
102
  #### Using a single CPU / GPU
103
 
104
  ```bash
105
- accelerate launch translate.py \
106
  --sentences_path sample_text/en.txt \
107
  --output_path sample_text/en2es.translation.m2m100_1.2B.txt \
108
  --source_lang en \
@@ -125,83 +141,71 @@ accelerate launch --multi_gpu --num_processes 2 --num_machines 1 translate.py \
125
  --model_name facebook/m2m100_1.2B
126
  ```
127
 
 
128
  #### Automatic batch size finder
129
 
130
  We will automatically find a batch size that fits in your GPU memory. The default initial batch size is 128 (You can set it with the `--starting_batch_size 128` flag). If we find an Out Of Memory error, we will automatically decrease the batch size until we find a working one.
131
 
132
- #### Choose precision
133
 
134
- Use the `--precision` flag to choose the precision of the model. You can choose between: bf16, fp16 and 32.
 
135
 
136
  ```bash
137
- accelerate launch translate.py \
 
 
138
  --sentences_path sample_text/en.txt \
139
- --output_path sample_text/en2es.translation.m2m100_1.2B.txt \
140
- --source_lang en \
141
- --target_lang es \
142
- --model_name facebook/m2m100_1.2B \
143
- --precision fp16
144
  ```
145
 
146
- ### Decoding/Sampling strategies
 
147
 
148
- You can choose the decoding/sampling strategy to use and the number of candidate translation to output for each input sentence. By default we will use beam-search with 'num_beams' set to 5, and we will output the most likely candidate translation. But you can change this behavior:
149
- ##### Greedy decoding
150
- ```bash
151
- accelerate launch translate.py \
152
- --sentences_path sample_text/en.txt \
153
- --output_path sample_text/en2es.translation.m2m100_1.2B.txt \
154
- --source_lang en \
155
- --target_lang es \
156
- --model_name facebook/m2m100_1.2B \
157
- --num_beams 1
158
- ```
159
 
160
- ##### Multinomial Sampling
161
- ```bash
162
- accelerate launch translate.py \
163
- --sentences_path sample_text/en.txt \
164
- --output_path sample_text/en2es.translation.m2m100_1.2B.txt \
165
- --source_lang en \
166
- --target_lang es \
167
- --model_name facebook/m2m100_1.2B \
168
- --num_beams 1 \
169
- --do_sample \
170
- --temperature 0.5 \
171
- --top_k 100 \
172
- --top_p 0.8 \
173
- --num_return_sequences 1
174
- ```
175
- ##### Beam-Search decoding **(DEFAULT)**
176
  ```bash
177
- accelerate launch translate.py \
178
  --sentences_path sample_text/en.txt \
179
- --output_path sample_text/en2es.translation.m2m100_1.2B.txt \
180
- --source_lang en \
181
- --target_lang es \
182
- --model_name facebook/m2m100_1.2B \
183
- --num_beams 5 \
184
- --num_return_sequences 1 \
185
- ```
186
- ##### Beam-Search Multinomial Sampling
 
 
 
 
187
  ```bash
188
- accelerate launch translate.py \
189
- --sentences_path sample_text/en.txt \
190
- --output_path sample_text/en2es.translation.m2m100_1.2B.txt \
191
- --source_lang en \
192
- --target_lang es \
193
- --model_name facebook/m2m100_1.2B \
194
- --num_beams 5 \
195
- --num_return_sequences 1 \
196
- --do_sample \
197
- --temperature 0.5 \
198
- --top_k 100 \
199
- --top_p 0.8
200
  ```
 
201
 
202
  ## Evaluate translations
203
 
204
- To run the evaluation script you need to install [bert_score](https://github.com/Tiiiger/bert_score): `pip install bert_score` and 🤗HuggingFace's [Datasets](https://huggingface.co/docs/datasets/index) model: `pip install datasets`.
205
 
206
  The evaluation script will calculate the following metrics:
207
 
@@ -215,9 +219,9 @@ The evaluation script will calculate the following metrics:
215
  Run the following command to evaluate the translations:
216
 
217
  ```bash
218
- accelerate launch eval.py \
219
- --pred_path sample_text/en2es.translation.m2m100_1.2B.txt
220
- --gold_path sample_text/es.txt \
221
  ```
222
 
223
  If you want to save the results to a file use the `--output_path` flag.
 
13
  <br>
14
  </p>
15
 
16
+ Easy-Translate is a script for translating large text files with a 💥SINGLE COMMAND💥. Easy-Translate is designed to be as easy as possible for **beginners** and as **seamless** and **customizable** as possible for advanced users.
17
+ We support almost any model, including [M2M100](https://arxiv.org/pdf/2010.11125.pdf),
18
+ [NLLB200](https://research.facebook.com/publications/no-language-left-behind/),
19
+ [LLaMA](https://ai.facebook.com/blog/large-language-model-llama-meta-ai/),
20
+ [Bloom](https://bigscience.notion.site/BLOOM-BigScience-176B-Model-ad073ca07cdf479398d5f95d88e218c4) and more 🥳.
21
+ We also provide a [script](#evaluate-translations) for Easy-Evaluation of your translations 📋
22
 
23
  Easy-Translate is built on top of 🤗HuggingFace's [Transformers](https://huggingface.co/docs/transformers/index) and 🤗HuggingFace's [Accelerate](https://huggingface.co/docs/accelerate/index) library.
24
 
25
+
26
  We currently support:
27
 
28
  - CPU / multi-CPU / GPU / multi-GPU / TPU acceleration
29
+ - BF16 / FP16 / FP32 / 8 Bits / 4 Bits precision.
30
  - Automatic batch size finder: Forget CUDA OOM errors. Set an initial batch size, if it doesn't fit, we will automatically adjust it.
31
+ - Multiple decoding strategies: Greedy Search, Beam Search, Top-K Sampling, Top-p (nucleus) sampling, etc. See [Decoding Strategies](#decodingsampling-strategies) for more information.
32
+ - :new: Load huge models in a single with GPU 8-bits / 4-bits quantization and support for splitting the model between GPU and CPU. See [Loading Huge Models](#loading-huge-models) for more information.
33
+ - :new: LoRA models support
34
+ - :new: Support for any Seq2SeqLM or CausalLM model from HuggingFace's Hub.
35
+ - :new: Prompt support! See [Prompting](#prompting) for more information.
36
 
37
  >Test the 🔌 Online Demo here: <https://huggingface.co/spaces/Iker/Translate-100-languages>
38
 
 
44
 
45
  ## Supported Models
46
 
47
+ 💥 EasyTranslate now supports any Seq2SeqLM (m2m100, nllb200, MarianMT, T5, FlanT5, etc.) and any CausalLM (GPT2, LLaMA, Vicuna, Falcon) model from HuggingFace's Hub!!
48
+ We still recommend you to use M2M100 or NLLB200 for the best results, but you can experiment with other LLMs and prompting to generate translations. See [Prompting Section](#prompting) for more information.
49
+
50
  ### M2M100
51
  **M2M100** is a multilingual encoder-decoder (seq-to-seq) model trained for Many-to-Many multilingual translation introduced in this [paper](https://arxiv.org/abs/2010.11125) and first released in [this](https://github.com/pytorch/fairseq/tree/master/examples/m2m_100) repository.
52
  >M2M100 can directly translate between 9,900 directions of 100 languages.
 
62
  **No Language Left Behind (NLLB)** open-sources models capable of delivering high-quality translations directly between any pair of 200+ languages — including low-resource languages like Asturian, Luganda, Urdu and more. It aims to help people communicate with anyone, anywhere, regardless of their language preferences. It was introduced in this [paper](https://research.facebook.com/publications/no-language-left-behind/) and first released in [this](https://github.com/facebookresearch/fairseq/tree/nllb) repository.
63
  >NLLB can directly translate between +40,000 of +200 languages.
64
 
65
+ - **facebook/nllb-moe-54b**: <https://huggingface.co/facebook/nllb-moe-54b> (Requires transformers 4.28.0)
66
+
67
  - **facebook/nllb-200-3.3B**: <https://huggingface.co/facebook/nllb-200-3.3B>
68
 
69
  - **facebook/nllb-200-1.3B**: <https://huggingface.co/facebook/nllb-200-1.3B>
 
73
  - **facebook/nllb-200-distilled-600M**: <https://huggingface.co/facebook/nllb-200-distilled-600M>
74
 
75
 
 
 
76
  ## Citation
77
  If you use this software please cite
78
  ````
 
94
  ## Requirements
95
 
96
  ```
97
+ Pytorch >= 1.10.0
98
  See: https://pytorch.org/get-started/locally/
99
 
100
  Accelerate >= 0.12.0
101
+ pip install accelerate
102
 
103
  HuggingFace Transformers
104
+ If you plan to use NLLB200, please use >= 4.28.0, as an important bug was fixed in this version.
105
  pip install --upgrade transformers
106
 
107
+ BitsAndBytes (Optional, for 8-bits / 4bits quantization)
108
+ pip install bitsandbytes
109
+
110
+ PEFT (Optional, for LoRA models)
111
+ pip install peft
112
  ```
113
 
114
  ## Translate a file
 
118
  #### Using a single CPU / GPU
119
 
120
  ```bash
121
+ python3 translate.py \
122
  --sentences_path sample_text/en.txt \
123
  --output_path sample_text/en2es.translation.m2m100_1.2B.txt \
124
  --source_lang en \
 
141
  --model_name facebook/m2m100_1.2B
142
  ```
143
 
144
+
145
  #### Automatic batch size finder
146
 
147
  We will automatically find a batch size that fits in your GPU memory. The default initial batch size is 128 (You can set it with the `--starting_batch_size 128` flag). If we find an Out Of Memory error, we will automatically decrease the batch size until we find a working one.
148
 
149
+ ### Loading Huge Models
150
 
151
+ Huge models such as LLaMA 65B or nllb-moe-54b can be load in a single GPU with 8 bits and 4 bits quantification with minimal performance degradation.
152
+ See [BitsAndBytes](https://github.com/TimDettmers/bitsandbytes). Set precision to 8 or 4 with the `--precision` flag.
153
 
154
  ```bash
155
+ pip install bitsandbytes
156
+
157
+ python3 translate.py \
158
  --sentences_path sample_text/en.txt \
159
+ --output_path sample_text/en2es.translation.nllb-moe-54b.txt \
160
+ --source_lang eng_Latn \
161
+ --target_lang spa_Latn \
162
+ --model_name facebook/nllb-moe-54b \
163
+ --precision 8
164
  ```
165
 
166
+ If even the quantified model does not fit in your GPU memory, you can set the `--force_auto_device_map` flag.
167
+ The model will be split across GPUs and CPU to fit it in memory. CPU offloading is slow, but will allow you to run huge models that do not fit in your GPU memory.
168
 
 
 
 
 
 
 
 
 
 
 
 
169
 
170
+
171
+ ### Prompting
172
+
173
+ You can use LLMs such as LLaMA, Vicuna, GPT2, FlanT5, etc, instead of a translation model. These models require
174
+ a prompt to define the task. You can either have the prompt already in the input file (each sentence includes the prompt)
175
+ or you can use the `--prompt` flag to add the prompt to each sentence. In this case, you need to include the token %%SENTENCE%% in the prompt.
176
+ This token will be replaced by the sentence to translate. You do not need to specify the `--source_lang` and `--target_lang` flags in this case.
177
+
 
 
 
 
 
 
 
 
178
  ```bash
179
+ python3 translate.py \
180
  --sentences_path sample_text/en.txt \
181
+ --output_path sample_text/en2es.FlanT5.translation.txt \
182
+ --model_name google/flan-t5-large \
183
+ --prompt "Translate English to Spanish: %%SENTENCE%%"
184
+ ```
185
+
186
+
187
+ ### Decoding/Sampling strategies
188
+
189
+ You can choose the decoding/sampling strategy to use and the number of candidate translations to output for each input sentence.
190
+ By default, we will use beam-search with `num_beams` set to 5, and we will output the most likely candidate translation. This should be the best
191
+ configuration for most use cases. You can change this behaviour with the following flags:
192
+
193
  ```bash
194
+ --num_beams: Number of beams to use for beam-search decoding (default: 5)
195
+ --do_sample: Whether to use sampling instead of beam-search decoding (default: False)
196
+ --temperature: Sampling temperature (default: 0.8)
197
+ --top_k: Top k sampling (default: 100)
198
+ --top_p: Top p sampling (default: 0.75)
199
+ --repetition_penalty: Repetition penalty (default: 1.0)
200
+ --keep_special_tokens: Whether to keep special tokens (default: False)
201
+ --keep_tokenization_spaces: Whether to keep tokenization spaces (default: False)
202
+ --num_return_sequences: Number of candidate translations to output for each input sentence (default: 1)
 
 
 
203
  ```
204
+ Please, note that running `--do_sample` with `--num_beams` > 1 and `8 bits` or `4 bits` quantification may be numerically unstable and produce an error.
205
 
206
  ## Evaluate translations
207
 
208
+ To run the evaluation script you need to install [bert_score](https://github.com/Tiiiger/bert_score): `pip install bert_score` and 🤗HuggingFace's [Evaluate](https://huggingface.co/docs/evaluate) model: `pip install evaluate`.
209
 
210
  The evaluation script will calculate the following metrics:
211
 
 
219
  Run the following command to evaluate the translations:
220
 
221
  ```bash
222
+ python3 eval.py \
223
+ --pred_path sample_text/en2es.translation.m2m100_1.2B.txt \
224
+ --gold_path sample_text/es.txt
225
  ```
226
 
227
  If you want to save the results to a file use the `--output_path` flag.
dataset.py CHANGED
@@ -7,19 +7,24 @@ def count_lines(input_path: str) -> int:
7
 
8
 
9
  class DatasetReader(IterableDataset):
10
- def __init__(self, filename, tokenizer, max_length=128):
11
  self.filename = filename
12
  self.tokenizer = tokenizer
13
  self.max_length = max_length
14
  self.current_line = 0
15
  self.total_lines = count_lines(filename)
 
16
  print(f"{self.total_lines} lines in {filename}")
17
 
18
  def preprocess(self, text: str):
19
  self.current_line += 1
20
  text = text.strip()
 
21
  if len(text) == 0:
22
  print(f"Warning: empty sentence at line {self.current_line}")
 
 
 
23
  return self.tokenizer(
24
  text,
25
  padding=False,
 
7
 
8
 
9
  class DatasetReader(IterableDataset):
10
+ def __init__(self, filename, tokenizer, max_length=128, prompt: str = None):
11
  self.filename = filename
12
  self.tokenizer = tokenizer
13
  self.max_length = max_length
14
  self.current_line = 0
15
  self.total_lines = count_lines(filename)
16
+ self.prompt = prompt
17
  print(f"{self.total_lines} lines in {filename}")
18
 
19
  def preprocess(self, text: str):
20
  self.current_line += 1
21
  text = text.strip()
22
+
23
  if len(text) == 0:
24
  print(f"Warning: empty sentence at line {self.current_line}")
25
+
26
+ if self.prompt is not None:
27
+ text = self.prompt.replace("%%SENTENCE%%", text)
28
  return self.tokenizer(
29
  text,
30
  padding=False,
eval.py CHANGED
@@ -1,7 +1,7 @@
1
  from dataset import ParallelTextReader
2
  from torch.utils.data import DataLoader
3
- from accelerate.memory_utils import find_executable_batch_size
4
- from datasets import load_metric
5
  from tqdm import tqdm
6
  import torch
7
  import json
@@ -46,41 +46,40 @@ def eval_files(
46
 
47
  dataloader = get_dataloader(pred_path, gold_path, starting_batch_size)
48
  print("Loading sacrebleu...")
49
- sacrebleu = load_metric("sacrebleu")
50
  print("Loading rouge...")
51
- rouge = load_metric("rouge")
52
  print("Loading bleu...")
53
- bleu = load_metric("bleu")
54
  print("Loading meteor...")
55
- meteor = load_metric("meteor")
56
  print("Loading ter...")
57
- ter = load_metric("ter")
58
  print("Loading BertScore...")
59
- bert_score = load_metric("bertscore")
60
 
61
  with tqdm(total=len(dataloader.dataset), desc="Loading data...") as pbar:
62
  for predictions, references in dataloader:
63
  sacrebleu.add_batch(predictions=predictions, references=references)
64
  rouge.add_batch(predictions=predictions, references=references)
65
- bleu.add_batch(
66
- predictions=[p.split() for p in predictions],
67
- references=[[r[0].split()] for r in references],
68
- )
69
  meteor.add_batch(predictions=predictions, references=references)
70
  ter.add_batch(predictions=predictions, references=references)
71
  bert_score.add_batch(predictions=predictions, references=references)
72
  pbar.update(len(predictions))
73
 
74
- result_dictionary = {}
75
- print(f"Computing sacrebleu")
76
  result_dictionary["sacrebleu"] = sacrebleu.compute()
77
- print(f"Computing rouge score")
78
- result_dictionary["rouge"] = rouge.compute()
79
- print(f"Computing bleu score")
 
 
80
  result_dictionary["bleu"] = bleu.compute()
81
- print(f"Computing meteor score")
82
  result_dictionary["meteor"] = meteor.compute()
83
- print(f"Computing ter score")
84
  result_dictionary["ter"] = ter.compute()
85
 
86
  @find_executable_batch_size(starting_batch_size=starting_batch_size)
 
1
  from dataset import ParallelTextReader
2
  from torch.utils.data import DataLoader
3
+ from accelerate import find_executable_batch_size
4
+ from evaluate import load
5
  from tqdm import tqdm
6
  import torch
7
  import json
 
46
 
47
  dataloader = get_dataloader(pred_path, gold_path, starting_batch_size)
48
  print("Loading sacrebleu...")
49
+ sacrebleu = load("sacrebleu")
50
  print("Loading rouge...")
51
+ rouge = load("rouge")
52
  print("Loading bleu...")
53
+ bleu = load("bleu")
54
  print("Loading meteor...")
55
+ meteor = load("meteor")
56
  print("Loading ter...")
57
+ ter = load("ter")
58
  print("Loading BertScore...")
59
+ bert_score = load("bertscore")
60
 
61
  with tqdm(total=len(dataloader.dataset), desc="Loading data...") as pbar:
62
  for predictions, references in dataloader:
63
  sacrebleu.add_batch(predictions=predictions, references=references)
64
  rouge.add_batch(predictions=predictions, references=references)
65
+ bleu.add_batch(predictions=predictions, references=references)
 
 
 
66
  meteor.add_batch(predictions=predictions, references=references)
67
  ter.add_batch(predictions=predictions, references=references)
68
  bert_score.add_batch(predictions=predictions, references=references)
69
  pbar.update(len(predictions))
70
 
71
+ result_dictionary = {"path": pred_path}
72
+ print("Computing sacrebleu")
73
  result_dictionary["sacrebleu"] = sacrebleu.compute()
74
+ print("Computing rouge score")
75
+ result_dictionary["rouge"] = rouge.compute(
76
+ use_aggregator=True, rouge_types=["rouge1", "rouge2", "rougeL", "rougeLsum"]
77
+ )
78
+ print("Computing bleu score")
79
  result_dictionary["bleu"] = bleu.compute()
80
+ print("Computing meteor score")
81
  result_dictionary["meteor"] = meteor.compute()
82
+ print("Computing ter score")
83
  result_dictionary["ter"] = ter.compute()
84
 
85
  @find_executable_batch_size(starting_batch_size=starting_batch_size)
model.py ADDED
@@ -0,0 +1,183 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from transformers import (
2
+ AutoConfig,
3
+ AutoModelForCausalLM,
4
+ AutoModelForSeq2SeqLM,
5
+ AutoTokenizer,
6
+ BitsAndBytesConfig,
7
+ PreTrainedModel,
8
+ PreTrainedTokenizerBase,
9
+ )
10
+
11
+ from transformers.models.auto.modeling_auto import (
12
+ MODEL_FOR_CAUSAL_LM_MAPPING_NAMES,
13
+ MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING_NAMES,
14
+ )
15
+
16
+ from typing import Optional, Tuple
17
+
18
+ import os
19
+
20
+ import torch
21
+
22
+ import json
23
+
24
+
25
+ def load_model_for_inference(
26
+ weights_path: str,
27
+ quantization: Optional[int] = None,
28
+ lora_weights_name_or_path: Optional[str] = None,
29
+ torch_dtype: Optional[str] = None,
30
+ force_auto_device_map: bool = False,
31
+ ) -> Tuple[PreTrainedModel, PreTrainedTokenizerBase]:
32
+ """
33
+ Load any Decoder model for inference.
34
+
35
+ Args:
36
+ weights_path (`str`):
37
+ The path to your local model weights and tokenizer. You can also provide a
38
+ huggingface hub model name.
39
+ quantization (`int`, optional):
40
+ '4' or '8' for 4 bits or 8 bits quantization or None for 16/32bits training. Defaults to `None`.
41
+
42
+ Requires bitsandbytes library: https://github.com/TimDettmers/bitsandbytes
43
+ lora_weights_name_or_path (`Optional[str]`, optional):
44
+ If the model has been trained with LoRA, path or huggingface hub name to the
45
+ pretrained weights. Defaults to `None`.
46
+ torch_dtype (`Optional[str]`, optional):
47
+ The torch dtype to use for the model. If set to `"auto"`, the dtype will be
48
+ automatically derived. Defaults to `None`. If quantization is enabled, we will override
49
+ this to 'torch.bfloat16'.
50
+ force_auto_device_map (`bool`, optional):
51
+ Whether to force the use of the auto device map. If set to True, the model will be split across
52
+ GPUs and CPU to fit the model in memory. If set to False, a full copy of the model will be loaded
53
+ into each GPU. Defaults to False.
54
+
55
+ Returns:
56
+ `Tuple[PreTrainedModel, PreTrainedTokenizerBase]`:
57
+ The loaded model and tokenizer.
58
+ """
59
+
60
+ if type(quantization) == str:
61
+ quantization = int(quantization)
62
+ assert (quantization is None) or (
63
+ quantization in [4, 8]
64
+ ), f"Quantization must be 4 or 8, or None for FP32/FP16 training. You passed: {quantization}"
65
+
66
+ print(f"Loading model from {weights_path}")
67
+
68
+ MODEL_FOR_CAUSAL_LM_MAPPING_NAMES.update(
69
+ {
70
+ "mpt": "MPTForCausalLM",
71
+ "RefinedWebModel": "RWForCausalLM",
72
+ "RefinedWeb": "RWForCausalLM",
73
+ }
74
+ ) # MPT and Falcon are not in transformers yet
75
+
76
+ config = AutoConfig.from_pretrained(
77
+ weights_path,
78
+ trust_remote_code=True
79
+ if ("mpt" in weights_path or "falcon" in weights_path)
80
+ else False,
81
+ )
82
+
83
+ torch_dtype = (
84
+ torch_dtype if torch_dtype in ["auto", None] else getattr(torch, torch_dtype)
85
+ )
86
+
87
+ tokenizer: PreTrainedTokenizerBase = AutoTokenizer.from_pretrained(
88
+ weights_path,
89
+ add_eos_token=True,
90
+ trust_remote_code=True
91
+ if ("mpt" in weights_path or "falcon" in weights_path)
92
+ else False,
93
+ )
94
+
95
+ quant_args = {}
96
+ if quantization is not None:
97
+ quant_args = (
98
+ {"load_in_4bit": True} if quantization == 4 else {"load_in_8bit": True}
99
+ )
100
+ if quantization == 4:
101
+ bnb_config = BitsAndBytesConfig(
102
+ load_in_4bit=True,
103
+ bnb_4bit_use_double_quant=True,
104
+ bnb_4bit_quant_type="nf4",
105
+ bnb_4bit_compute_dtype=torch.bfloat16,
106
+ )
107
+ torch_dtype = torch.bfloat16
108
+
109
+ else:
110
+ bnb_config = BitsAndBytesConfig(
111
+ load_in_8bit=True,
112
+ )
113
+ print(
114
+ f"Bits and Bytes config: {json.dumps(bnb_config.to_dict(),indent=4,ensure_ascii=False)}"
115
+ )
116
+ else:
117
+ print(f"Loading model with dtype: {torch_dtype}")
118
+ bnb_config = None
119
+
120
+ if config.model_type in MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING_NAMES:
121
+ print(
122
+ f"Model {weights_path} is a encoder-decoder model. We will load it as a Seq2SeqLM model."
123
+ )
124
+ model: PreTrainedModel = AutoModelForSeq2SeqLM.from_pretrained(
125
+ pretrained_model_name_or_path=weights_path,
126
+ device_map="auto" if force_auto_device_map else None,
127
+ torch_dtype=torch_dtype,
128
+ quantization_config=bnb_config,
129
+ **quant_args,
130
+ )
131
+
132
+ elif config.model_type in MODEL_FOR_CAUSAL_LM_MAPPING_NAMES:
133
+ print(
134
+ f"Model {weights_path} is an encoder-only model. We will load it as a CausalLM model."
135
+ )
136
+ model: PreTrainedModel = AutoModelForCausalLM.from_pretrained(
137
+ pretrained_model_name_or_path=weights_path,
138
+ device_map="auto" if force_auto_device_map else None,
139
+ torch_dtype=torch_dtype,
140
+ trust_remote_code=True
141
+ if ("mpt" in weights_path or "falcon" in weights_path)
142
+ else False,
143
+ quantization_config=bnb_config,
144
+ **quant_args,
145
+ )
146
+
147
+ # Ensure that the padding token is added to the left of the input sequence.
148
+ tokenizer.padding_side = "left"
149
+ else:
150
+ raise ValueError(
151
+ f"Model {weights_path} of type {config.model_type} is not supported by EasyTranslate."
152
+ "Supported models are:\n"
153
+ f"Seq2SeqLM: {MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING_NAMES}\n"
154
+ f"CausalLM: {MODEL_FOR_CAUSAL_LM_MAPPING_NAMES}\n"
155
+ )
156
+
157
+ if tokenizer.pad_token_id is None:
158
+ if "<|padding|>" in tokenizer.get_vocab():
159
+ # StableLM specific fix
160
+ tokenizer.add_special_tokens({"pad_token": "<|padding|>"})
161
+ elif tokenizer.unk_token is not None:
162
+ print(
163
+ "Model does not have a pad token, we will use the unk token as pad token."
164
+ )
165
+ tokenizer.pad_token_id = tokenizer.unk_token_id
166
+ else:
167
+ print(
168
+ "Model does not have a pad token. We will use the eos token as pad token."
169
+ )
170
+ tokenizer.pad_token_id = tokenizer.eos_token_id
171
+
172
+ if lora_weights_name_or_path:
173
+ from peft import PeftModel
174
+
175
+ print(f"Loading pretrained LORA weights from {lora_weights_name_or_path}")
176
+ model = PeftModel.from_pretrained(model, lora_weights_name_or_path)
177
+
178
+ if quantization is None:
179
+ # If we are not using quantization, we merge the LoRA layers into the model for faster inference.
180
+ # This is not possible if we are using 4/8 bit quantization.
181
+ model = model.merge_and_unload()
182
+
183
+ return model, tokenizer
sample_text/en2es.m2m100_1.2B.json CHANGED
@@ -1,6 +1,7 @@
1
  {
 
2
  "sacrebleu": {
3
- "score": 32.101150640281695,
4
  "counts": [
5
  19160,
6
  11392,
@@ -8,116 +9,52 @@
8
  5186
9
  ],
10
  "totals": [
11
- 31477,
12
- 30479,
13
- 29481,
14
- 28485
15
  ],
16
  "precisions": [
17
- 60.86984147155066,
18
- 37.37655434889596,
19
- 25.636850853091822,
20
- 18.20607337195015
21
  ],
22
- "bp": 1.0,
23
- "sys_len": 31477,
24
- "ref_len": 30102
25
  },
26
  "rouge": {
27
- "rouge1": [
28
- [
29
- 0.5852396804366098,
30
- 0.6089057437338691,
31
- 0.5919486437026797
32
- ],
33
- [
34
- 0.5964621218261164,
35
- 0.6200342221830797,
36
- 0.6029705008756368
37
- ],
38
- [
39
- 0.6068321807422377,
40
- 0.6311106822798185,
41
- 0.61324805661008
42
- ]
43
- ],
44
- "rouge2": [
45
- [
46
- 0.3710985389559613,
47
- 0.38708055355385995,
48
- 0.3761201217327784
49
- ],
50
- [
51
- 0.3844850790869714,
52
- 0.40017782122170353,
53
- 0.38920434271970195
54
- ],
55
- [
56
- 0.3968990790506025,
57
- 0.41382310483690327,
58
- 0.4022299418726329
59
- ]
60
- ],
61
- "rougeL": [
62
- [
63
- 0.5351505034410595,
64
- 0.5564838960633809,
65
- 0.5410602618870524
66
- ],
67
- [
68
- 0.5457898501195475,
69
- 0.5677049056091881,
70
- 0.5519189480892548
71
- ],
72
- [
73
- 0.5575497491149766,
74
- 0.5787856637940312,
75
- 0.5630101422167583
76
- ]
77
- ],
78
- "rougeLsum": [
79
- [
80
- 0.5352116089085267,
81
- 0.5570236521823667,
82
- 0.5415939934790461
83
- ],
84
- [
85
- 0.5463246235983789,
86
- 0.5676427704754348,
87
- 0.5522237812823654
88
- ],
89
- [
90
- 0.5581141358005033,
91
- 0.5796683147249665,
92
- 0.5630221371759908
93
- ]
94
- ]
95
  },
96
  "bleu": {
97
- "bleu": 0.2842153038526809,
98
  "precisions": [
99
- 0.5535070989616444,
100
- 0.33646946844340314,
101
- 0.22383069265549602,
102
- 0.15653135365661033
103
  ],
104
- "brevity_penalty": 1.0,
105
- "length_ratio": 1.0469217970049918,
106
- "translation_length": 28314,
107
- "reference_length": 27045
108
  },
109
  "meteor": {
110
- "meteor": 0.4880039569987408
111
  },
112
  "ter": {
113
- "score": 59.500831946755405,
114
- "num_edits": 16092,
115
- "ref_length": 27045.0
116
  },
117
  "bert_score": {
118
- "precision": 0.8192488248944283,
119
- "recall": 0.8262857750356197,
120
- "f1": 0.8223461411595344,
121
- "hashcode": "microsoft/deberta-xlarge-mnli_L40_no-idf_version=0.3.11(hug_trans=4.18.0)_fast-tokenizer"
122
  }
123
  }
 
1
  {
2
+ "path": "sample_text/en2es.translation.m2m100_1.2B.txt",
3
  "sacrebleu": {
4
+ "score": 32.14645334893687,
5
  "counts": [
6
  19160,
7
  11392,
 
9
  5186
10
  ],
11
  "totals": [
12
+ 30102,
13
+ 29102,
14
+ 28104,
15
+ 27106
16
  ],
17
  "precisions": [
18
+ 63.65025579695701,
19
+ 39.145075939797955,
20
+ 26.89296897238827,
21
+ 19.13229543274552
22
  ],
23
+ "bp": 0.9553495084330463,
24
+ "sys_len": 30102,
25
+ "ref_len": 31477
26
  },
27
  "rouge": {
28
+ "rouge1": 0.6031630371962684,
29
+ "rouge2": 0.38939154291666417,
30
+ "rougeL": 0.5515330844231945,
31
+ "rougeLsum": 0.5523095078982578
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  },
33
  "bleu": {
34
+ "bleu": 0.3214645334893687,
35
  "precisions": [
36
+ 0.6365025579695701,
37
+ 0.3914507593979795,
38
+ 0.2689296897238827,
39
+ 0.19132295432745516
40
  ],
41
+ "brevity_penalty": 0.9553495084330461,
42
+ "length_ratio": 0.9563173110525145,
43
+ "translation_length": 30102,
44
+ "reference_length": 31477
45
  },
46
  "meteor": {
47
+ "meteor": 0.5592932008785984
48
  },
49
  "ter": {
50
+ "score": 56.87645687645687,
51
+ "num_edits": 16104,
52
+ "ref_length": 28314.0
53
  },
54
  "bert_score": {
55
+ "precision": 0.8262958707809448,
56
+ "recall": 0.8192555149793624,
57
+ "f1": 0.8223544662296772,
58
+ "hashcode": "microsoft/deberta-xlarge-mnli_L40_no-idf_version=0.3.12(hug_trans=4.30.0.dev0)_fast-tokenizer"
59
  }
60
  }
sample_text/en2es.m2m100_12B.json CHANGED
@@ -1,6 +1,7 @@
1
  {
 
2
  "sacrebleu": {
3
- "score": 33.436451348487466,
4
  "counts": [
5
  19586,
6
  11874,
@@ -8,116 +9,52 @@
8
  5450
9
  ],
10
  "totals": [
11
- 31477,
12
- 30479,
13
- 29481,
14
- 28485
15
  ],
16
  "precisions": [
17
- 62.22321059821457,
18
- 38.957971062042716,
19
- 26.94956073403209,
20
- 19.132876952782166
21
  ],
22
- "bp": 1.0,
23
- "sys_len": 31477,
24
- "ref_len": 30620
25
  },
26
  "rouge": {
27
- "rouge1": [
28
- [
29
- 0.5868986191655717,
30
- 0.5990516851228531,
31
- 0.5892049154144693
32
- ],
33
- [
34
- 0.5977571827236499,
35
- 0.6099207497981789,
36
- 0.5995111761931164
37
- ],
38
- [
39
- 0.6079524761878128,
40
- 0.6202142720286049,
41
- 0.6094761236959281
42
- ]
43
- ],
44
- "rouge2": [
45
- [
46
- 0.3706071661208073,
47
- 0.3785178998280979,
48
- 0.37195231176110016
49
- ],
50
- [
51
- 0.3822973112445337,
52
- 0.3910339885523211,
53
- 0.3840413583143001
54
- ],
55
- [
56
- 0.3943269285733919,
57
- 0.40342286677145006,
58
- 0.39586855043691616
59
- ]
60
- ],
61
- "rougeL": [
62
- [
63
- 0.5396432739320616,
64
- 0.5500014160494135,
65
- 0.5415782549465077
66
- ],
67
- [
68
- 0.5501208131226542,
69
- 0.5612357333331699,
70
- 0.5516218104057385
71
- ],
72
- [
73
- 0.5618124341271667,
74
- 0.572879684102229,
75
- 0.562976363702977
76
- ]
77
- ],
78
- "rougeLsum": [
79
- [
80
- 0.538985057343137,
81
- 0.5513723525906167,
82
- 0.5416040213401992
83
- ],
84
- [
85
- 0.5506317054043084,
86
- 0.5618544163370318,
87
- 0.552372087766954
88
- ],
89
- [
90
- 0.562072829679551,
91
- 0.5729279153458795,
92
- 0.5629424360218582
93
- ]
94
- ]
95
  },
96
  "bleu": {
97
- "bleu": 0.2966828370181192,
98
  "precisions": [
99
- 0.5677756586847496,
100
- 0.3517718553228877,
101
- 0.23602720468102892,
102
- 0.1643500236929395
103
  ],
104
- "brevity_penalty": 1.0,
105
- "length_ratio": 1.029862146728258,
106
- "translation_length": 28314,
107
- "reference_length": 27493
108
  },
109
  "meteor": {
110
- "meteor": 0.48057062339433765
111
  },
112
  "ter": {
113
- "score": 57.60375368275561,
114
- "num_edits": 15837,
115
- "ref_length": 27493.0
116
  },
117
  "bert_score": {
118
- "precision": 0.8292220607697963,
119
- "recall": 0.8316881820857525,
120
- "f1": 0.8299418310523033,
121
- "hashcode": "microsoft/deberta-xlarge-mnli_L40_no-idf_version=0.3.11(hug_trans=4.18.0)_fast-tokenizer"
122
  }
123
  }
 
1
  {
2
+ "path": "sample_text/en2es.translation.m2m100_12B.txt",
3
  "sacrebleu": {
4
+ "score": 33.475597947249206,
5
  "counts": [
6
  19586,
7
  11874,
 
9
  5450
10
  ],
11
  "totals": [
12
+ 30620,
13
+ 29620,
14
+ 28620,
15
+ 27621
16
  ],
17
  "precisions": [
18
+ 63.96472893533638,
19
+ 40.08777852802161,
20
+ 27.76030747728861,
21
+ 19.731363817385322
22
  ],
23
+ "bp": 0.9723997992594404,
24
+ "sys_len": 30620,
25
+ "ref_len": 31477
26
  },
27
  "rouge": {
28
+ "rouge1": 0.6128148295299917,
29
+ "rouge2": 0.4036041741520725,
30
+ "rougeL": 0.5643514518621683,
31
+ "rougeLsum": 0.5645246174672706
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  },
33
  "bleu": {
34
+ "bleu": 0.3347559794724921,
35
  "precisions": [
36
+ 0.6396472893533638,
37
+ 0.40087778528021606,
38
+ 0.2776030747728861,
39
+ 0.19731363817385322
40
  ],
41
+ "brevity_penalty": 0.9723997992594404,
42
+ "length_ratio": 0.9727737713250945,
43
+ "translation_length": 30620,
44
+ "reference_length": 31477
45
  },
46
  "meteor": {
47
+ "meteor": 0.5707993033147661
48
  },
49
  "ter": {
50
+ "score": 55.891078618351344,
51
+ "num_edits": 15825,
52
+ "ref_length": 28314.0
53
  },
54
  "bert_score": {
55
+ "precision": 0.8284017654061318,
56
+ "recall": 0.8250637047588826,
57
+ "f1": 0.8263607999384404,
58
+ "hashcode": "microsoft/deberta-xlarge-mnli_L40_no-idf_version=0.3.12(hug_trans=4.30.0.dev0)_fast-tokenizer"
59
  }
60
  }
sample_text/en2es.m2m100_418M.json CHANGED
@@ -1,6 +1,7 @@
1
  {
 
2
  "sacrebleu": {
3
- "score": 29.035496917461597,
4
  "counts": [
5
  18582,
6
  10514,
@@ -8,116 +9,52 @@
8
  4387
9
  ],
10
  "totals": [
11
- 31477,
12
- 30479,
13
- 29481,
14
- 28485
15
  ],
16
  "precisions": [
17
- 59.033580074339994,
18
- 34.49588241084025,
19
- 22.662053525999795,
20
- 15.401088292083553
21
  ],
22
- "bp": 1.0,
23
- "sys_len": 31477,
24
- "ref_len": 30388
25
  },
26
  "rouge": {
27
- "rouge1": [
28
- [
29
- 0.5661701202298134,
30
- 0.5806961045770566,
31
- 0.5693885562082325
32
- ],
33
- [
34
- 0.5768745925790656,
35
- 0.5926959547911554,
36
- 0.5803693779677083
37
- ],
38
- [
39
- 0.5871085218904836,
40
- 0.6035331460243276,
41
- 0.5900979805085623
42
- ]
43
- ],
44
- "rouge2": [
45
- [
46
- 0.34243414046469267,
47
- 0.35226400857606666,
48
- 0.34469210847048837
49
- ],
50
- [
51
- 0.3545484183384055,
52
- 0.36470783370743065,
53
- 0.3569058648048812
54
- ],
55
- [
56
- 0.36612813327517263,
57
- 0.37717476449671,
58
- 0.3689653665404565
59
- ]
60
- ],
61
- "rougeL": [
62
- [
63
- 0.5129704896656746,
64
- 0.526995889564155,
65
- 0.5162056185006965
66
- ],
67
- [
68
- 0.523632841460358,
69
- 0.5375452284094455,
70
- 0.5267080806612512
71
- ],
72
- [
73
- 0.5350158816319085,
74
- 0.5480980981777757,
75
- 0.5372302857012781
76
- ]
77
- ],
78
- "rougeLsum": [
79
- [
80
- 0.5126805856827783,
81
- 0.5265189554049317,
82
- 0.5155154093959223
83
- ],
84
- [
85
- 0.5239559133309495,
86
- 0.5380410013947112,
87
- 0.5271022617246641
88
- ],
89
- [
90
- 0.5351934954578494,
91
- 0.5491115103854219,
92
- 0.5381174565735956
93
- ]
94
- ]
95
  },
96
  "bleu": {
97
- "bleu": 0.2546886610724999,
98
  "precisions": [
99
- 0.5339761248852158,
100
- 0.30784155806120955,
101
- 0.19560013678331242,
102
- 0.1308640025272469
103
  ],
104
- "brevity_penalty": 1.0,
105
- "length_ratio": 1.0353982300884956,
106
- "translation_length": 28314,
107
- "reference_length": 27346
108
  },
109
  "meteor": {
110
- "meteor": 0.4630996837124251
111
  },
112
  "ter": {
113
- "score": 61.848167922182405,
114
- "num_edits": 16913,
115
- "ref_length": 27346.0
116
  },
117
  "bert_score": {
118
- "precision": 0.8128397642374039,
119
- "recall": 0.8185485603511333,
120
- "f1": 0.8153312988877296,
121
- "hashcode": "microsoft/deberta-xlarge-mnli_L40_no-idf_version=0.3.11(hug_trans=4.18.0)_fast-tokenizer"
122
  }
123
  }
 
1
  {
2
+ "path": "sample_text/en2es.translation.m2m100_418M.txt",
3
  "sacrebleu": {
4
+ "score": 29.072907202886253,
5
  "counts": [
6
  18582,
7
  10514,
 
9
  4387
10
  ],
11
  "totals": [
12
+ 30388,
13
+ 29388,
14
+ 28390,
15
+ 27392
16
  ],
17
  "precisions": [
18
+ 61.14913781755956,
19
+ 35.77650741799374,
20
+ 23.53293413173653,
21
+ 16.015625
22
  ],
23
+ "bp": 0.9647980111591153,
24
+ "sys_len": 30388,
25
+ "ref_len": 31477
26
  },
27
  "rouge": {
28
+ "rouge1": 0.579804125926684,
29
+ "rouge2": 0.35711799408400774,
30
+ "rougeL": 0.5267816454754455,
31
+ "rougeLsum": 0.5273163154797025
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  },
33
  "bleu": {
34
+ "bleu": 0.29072907202886256,
35
  "precisions": [
36
+ 0.6114913781755956,
37
+ 0.3577650741799374,
38
+ 0.23532934131736527,
39
+ 0.16015625
40
  ],
41
+ "brevity_penalty": 0.9647980111591153,
42
+ "length_ratio": 0.9654033103535915,
43
+ "translation_length": 30388,
44
+ "reference_length": 31477
45
  },
46
  "meteor": {
47
+ "meteor": 0.5341572751283119
48
  },
49
  "ter": {
50
+ "score": 59.71604153422335,
51
+ "num_edits": 16908,
52
+ "ref_length": 28314.0
53
  },
54
  "bert_score": {
55
+ "precision": 0.8185503813624382,
56
+ "recall": 0.8128425980806351,
57
+ "f1": 0.8153334923088551,
58
+ "hashcode": "microsoft/deberta-xlarge-mnli_L40_no-idf_version=0.3.12(hug_trans=4.30.0.dev0)_fast-tokenizer"
59
  }
60
  }
sample_text2/en2es.translation.flanT5-base.txt ADDED
@@ -0,0 +1,384 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Resumpción de la sesión
2
+ Estoy declarando que se resumió la sesión del Parlamento Europeo adjurado el viernes 17 de diciembre de 1999, y quisiera una vez más decirle un nuevo ao feliz en el esperanza de que usted reciba un perodo agradable celebrado.
3
+ Aunque, como veas, el dresado'millennium bug' no materializó, sin embargo, la gente en una serie de pases sufrió una serie de catástrofes naturales que eran verdaderamente dreadfules.
4
+ Usted ha solicitado un debate sobre este tema en el curso de los próximos das, durante esta sesión de parte.
5
+ En el momento, quisiera observar un minuto de silencio, como haya solicitado en nombre de todos los vctimos, especialmente de los territorios tursticos, en las diversas pases de la Unión Europea.
6
+ Permtanme sobre el silencio de este minuto.
7
+ (La Casa acerca y observa un minuto' s silencio)
8
+ Madam Presidente, en un punto de orden.
9
+ Se conoce de la prensa y de la televisión que haya hecho una serie de explosións de bombas y muertos en Sri Lanka.
10
+ Una de las personas asasinadas muy recientemente en Sri Lanka fue el Sr. Kumar Ponnambalam, que haba visitado el Parlamento Europeo hace pocos meses.
11
+ Es apropiado para ustedes, seora Presidenta, escribir una carta a la Presidenta Sri Lanka que expresa la remora del Parlamento a su y a los otros muertos violentos en Sri Lanka y a ella que hacer todo lo que puede hacer para buscar una reconciliación pacfica a una situación muy difcil?
12
+ No, seor Evans, me parece que una iniciativa del tipo que yo he sugerido ahora sera completamente apropiada.
13
+ Si el Parlamento está acusado, voy a hacer lo que el seor Evans ha sugerido.
14
+ Madam Presidente, en un punto de orden.
15
+ Quisiera tu ayuda sobre el regla 143 sobre la inadmisibilidad.
16
+ Mi pregunta se refiere a algo que ocurrirá el jornalista el da y que entonces me llevará nuevamente.
17
+ El informe Cunha sobre programas de orientación multianual se encuentra en el Parlamento el viernes y contiene una propuesta en el párrafo 6 de que se introduce una forma de penalidades de cota para pases que no cumplien sus objetivos de reducción de la flota cada ao.
18
+ Se dice que esto debe ser realizado a pesar del principio de estabilidad relativa.
19
+ Creo que el principio de estabilidad relativa es un principio jurdica fundamental de la poltica comn de pesca, y una propuesta para subvertirla sera legalmente inadmissible.
20
+ Quiero saber si puede plantear una objeción de tal tipo a lo que es sólo un informe, no un propuesto legislativo, y si es algo que puedo hacer competentemente el viernes.
21
+ Esta es exactamente el momento en que puede, si usted quiere, plantear esta cuestión, es decir, el julio antes de la iniciativa de la presentación del informe.
22
+ Seora Presidenta, coincidente con la primera sesión de este ao del Parlamento Europeo, ha sido escrito, desafortunadamente, por el próximo jornal, en Texas en Estados Unidos, para la ejecución de un joven joven de 34 aos, que ha sido encarcelado a muerte.
23
+ A la requerimiento de un miembro franceso, el Sr. Zimeray, ha sido presentado una petición, que ya se unió a muchos personas, incluyendo yo. Sin embargo, quisiera que, en acuerdo con el lnea que está ahora siguiendo constantemente por el Parlamento Europeo y por todo el
24
+ Esto es todo en acuerdo con los principios que hemos sido acusado siempre.
25
+ Gracias, seor Segni, voy a hacerlo bien.
26
+ En realidad, es bastante conforme a las posiciones que el Parlamento ha adoptado siempre.
27
+ Seora Presidenta, quisiera atraer tu atención a un caso en el que este Parlamento ha mostrado constantemente un interés.
28
+ Es el caso de Alexander Nikitin.
29
+ Todos nosotros aqu estamos satisfechos que los tribunales han acusado y han claro que en Rusia también el acceso a la información medioambiental es también un derecho constitucional.
30
+ Ahora, sin embargo, él está llegar a los tribunales una vez más porque el procurador pblico está apelando.
31
+ Sabemos, y hemos afirmado tanto en muy muchos resoluciones, incluyendo especficamente durante la ltima sesión plenaria del ao pasado, que esto no es solo un caso jurdico y que es igual que Alexander Nikitin se acusa de actividad y treasono por nuestra implicación como los beneficiarios de sus encuentros
32
+ Estos resultados constituyen el fundamento de los programas europeos para proteger el mar Barents, y por eso quisiera examinar un proyecto de carta que estipula los hechos más importantes y hacer que la posición del Parlamento, como es expresada en las resoluciones que se han adoptado, es claro en cuanto
33
+ No, seora Schroedter, me gustara mirar los hechos de este caso cuando he recibido su carta.
34
+ Seora Presidenta, quisiera en primer lugar felicitarles por el hecho de que t han mantenido su palabra y que, durante este primera sesión del nuevo ao, el nmero de canales de televisión en nuestros oficios ha aumentado considerablemente.
35
+ Pero, seora Presidenta, mi demanda personal no ha sido cumplida.
36
+ Aunque ahora hay dos canales finlandeses y uno portugueso, an no hay canales norteamericanos, lo que he requerido porque la gente norteamericana aqu tiene que seguir también las noticias cuando estamos enviados a este lugar de exile cada mes.
37
+ Por tanto, yo quisiera an más solicitar que tenemos también un canal holandés también.
38
+ Seora Plooij-van Gorsel, puedo decirles que esta cuestión está en la agenda de la reunión de los Quaestors el da.
39
+ Esto, espero, será examinada en una luz positiva.
40
+ Seora Presidenta, por qué no se acuerda a este Parlamento a la legislación de salud y seguridad que actualmente pasa?
41
+ Por qué no se ha realizado un test de calidad del aire en este edificio particular desde que fuese elegido?
42
+ Por qué no ha llegado a la reunión del Comité de Salud y Seguridad desde 1998?
43
+ Por qué no ha pasado una ejercicio de energa en las edificios del Parlamento de Bruselas o en las edificios del Parlamento de Strasbourg?
44
+ Por qué no hay instrucciones de fuego?
45
+ Por qué no han mejorado los caminos desde mi accidente?
46
+ Por qué no se aplican áreas de no fumar?
47
+ Se parece absolutamente desgraciado que pasamos la legislación y no se adhieremos a ellos mismos.
48
+ Seora Lynne, es bastante correcto y voy a verificar si esto no ha sido realmente hecho.
49
+ También voy a referirse a la Colegio de Quaestors, y estoy seguro de que ellos estarán encantados de asegurarnos de que cumplimos con las reglas que nosotros votamos.
50
+ Madam Presidente, la seora Dez González y yo haban planteado preguntas sobre ciertas opiniones del Vicepresidente, la seora de Palacio, que aparecan en una periódico espaola.
51
+ Los servicios competentes no han incluidolos en el orden del ao por las razones de que se haban respondido en una sesión anterior.
52
+ Quisiera que ellos reconsideran, porque no es el caso.
53
+ Las preguntas que se respondieron anteriormente referan a la intervención de la seora de Palacio, en otro momento, y no a estas comentarios que aparecan en el periódico ABC el 18 de noviembre.
54
+ Seor Berenguer Fuster, vamos a verificar todo esto.
55
+ Quiero admitir que, en este momento, la cuestión parece parecer algo confuso.
56
+ Por tanto, vamos a examinarlo adecuadamente para asegurar que todo es lo que debe ser.
57
+ Seora Presidenta, quiero saber si va a transmitir un mensaje claro del Parlamento este semana sobre nuestra discontento sobre la decisión de hoy no renovar el embargo de armas en Indonesia, considerando que la mayora de este Parlamento han aprobado el embargo de armas en Indonesia en el pasado?
58
+ La decisión de hoy no renovar el embargo es extremadamente peligroso considerando la situación aqu.
59
+ As que el Parlamento debe transmitir un mensaje, ya que es el deseo de la mayora.
60
+ Es irresponsable de los Estados miembros de la UE a negar la renovación del embargo.
61
+ Como las personas han dicho, la situación aqu es extremadamente valiosa.
62
+ De hecho, hay una riesgo de una coup militar en el futuro.
63
+ No sabemos lo que sucede.
64
+ Por qué debera los productores de armas de la UE ganarse por el desafo de la gente innocente?
65
+ En cualquier caso, esa cuestión no se incluye actualmente entre las demandas de debate técnica y urgente el viernes.
66
+ Agencia del Agencia del Agencia del Agencia del Agencia del Agencia del Agencia del Agencia del Agencia del Agencia del Agencia del Agencia del Agencia del Agencia del Agencia del Agencia del Agencia del Agencia del Agencia del Agencia del Agencia del Agencia del Agencia del Agencia del Agencia del Agen
67
+ El segundo asunto es la verificación de la versión final del proyecto de agenda escrito por la Conferencia de Presidentes en su reunión del 13 de enero en respuesta a las reglas 110 del procedimiento.
68
+ No se han propuesto ningunas modificaciones relacionadas con el máximo y el da.
69
+ Relacionado a miércoles:
70
+ El Grupo del Partido de Socialistas Europeos solicita que una declaración de la Comisión se incluye en sus objetivos estratégicos para los próximos cinco aos y en la reforma administrativa de la Comisión.
71
+ Quisiera que el Sr. Barón Crespo, quien ha planteado el requerio, hablar para proponerlo, por supuesto, si él desea, por supuesto.
72
+ Entonces vamos a seguir el procedimiento habitual, escuchando un pueblo en fe y un pueblo contra.
73
+ Seora Presidenta, la presentación del programa poltico de la Comisión de Prodi para toda la legislación fue inicialmente una propuesta del Grupo del Partido de Socialistas Europeos que fue aprobado unanimamente por la Conferencia de Presidentes en septiembre y que fue también aceptado explcitamente por el Presidente Prodi,
74
+ Esta angajamento es importante porque la Comisión es un organismo con un monopolio de iniciativa en acuerdo con los Tratados y, por tanto, dicta el actividad poltico y legislativo de este Parlamento durante los próximos cinco aos.
75
+ Además, seora Presidenta, quisiera decir que este Parlamento votó para expresar su confianza en el Presidente Prodi durante el ejercicio anterior. Se hizo otra vez durante este ejercicio, en julio, y entonces, en septiembre, votó una vez más para aprobar toda la Comisión.
76
+ Por tanto, haya sido suficiente tiempo para que la Comisión prepara su programa y nosotros nos conocemos con él y nos explicamos a nuestros ciudadanos.
77
+ Para este fin, quisiera recordar el resolución del 15 de septiembre, que recomendó que el propuesto se presenta ahora posiblemente.
78
+ Los eventos del semana pasado - que originaban afuera de la Conferencia de Presidentes, que se utiliza simplemente para corrobor y ratificar decisiones tomadas en otros pases - nos presentan un dilema: o la Comisión no es posible presentar este programa, en el caso de que ella debe clarificarlo.
79
+ De acuerdo con su Presidente, está en una posición para hacerlo.
80
+ Debido a que la Comisión está representada por el Vice-Presidente de Palacio, creo que, antes de la votación, sera ayuda a que la Comisión nos podra ensear a saber cómo es posible presentar este programa, como se convenció. De otro modo, el Parlamento no es posible examinar este programa, como algu
81
+ En mi opinión, este segundo hipótesis implicara la falta del Parlamento en su obligación como Parlamento, as como introducir una teora original, un método inconveniente que consiste en dar a los grupos polticos, en escritos, a una habla sobre el programa de la Comisión una semana antes -y no un da
82
+ Mi Grupo cree que, como una parlamento tiene que escuchar, debatir y reflejar, no puede haber ninguna justificación para esta tarde, y creemos que si la Comisión está aceptada a hacerlo, todava tenemos tiempo para reestablir el acuerdo original entre el Parlamento y la Comisión y procedirse
83
+ Por lo tanto, el propuesto del Grupo del Partido Socialista Europeo, y que haya mencionado, es que la Comisión Prodi presenta su programa legislativo el da, incluyendo su reforma administrativa propuesta, porque, por otro lado, podramos encontrarnos en una situación paradóctica: en la pretexto de que no hay texto,
84
+ Por lo tanto, seora Presidenta, quisiera pedir que la Comisión expresa su opinione sobre este asunto y que luego procedemos a la votación.
85
+ (Aplausos del Grupo PSE)
86
+ Seora Presidenta, quisiera decir muy claro que, más allá de todo, la Comisión tiene respeto absoluto a las decisiones de este Parlamento y, entre ellos, a las decisiones que establecen su agenda.
87
+ Por tanto, respetamos cualquiera que el Parlamento puede decidir.
88
+ Pero también quiero decir muy claro que el Presidente Prodi ha tenido un compromiso a este Parlamento para introducir una nueva debate, como nos ha recordado el Sr. Barón Crespo, que sera además del debate anual sobre el programa legislativo de la Comisión, sobre las amplias áreas de acción para los próximos cinco aos
89
+ Seora Presidenta, quisiera decir que el acuerdo llamado en septiembre distingua esta debate de la presentación anual del programa legislativo de la Comisión.
90
+ También quisiera decir que la Comisión está preparada y adecuada para celebrar este debate cuando es conveniente, y que estamos aceptados a hacerlo este semana, como hemos convencido originalmente, sobre la base de que será presentada el da antes en una habla a grupos parlamentarios.
91
+ Por lo tanto, seora Presidenta, quisiera repetir que la Comisión ha debatido el plan de acción para los próximos cinco aos y, cuando el Parlamento decidimos, -ese semana si es el decisione - estamos preparados para llevar a explicar el programa para los próximos cinco aos y
92
+ Probablemente propone votar sobre la solicitud del Grupo del Partido Socialista Europeo de que la declaración de la Comisión sobre sus objetivos estratégicos debera ser reinstituida.
93
+ (Parliamento rechazó la solicitud) Presidente.
94
+ An en el tema de la sesión de julio, tengo otro propuesto sobre la cuestión oral sobre el impuesto de capital.
95
+ El Grupo PPE-DE requiere que esta cuestión se detiende a la agenda.
96
+ Hay un miembro que quiere hablar en nombre de este Grupo para propone esto?
97
+ Seora Presidenta, puedo escuchar una ruida de aflicción de los socialistas.
98
+ Se le dijo que las grandes secciones del Grupo Socialista también estaban encantados de aadir esta cuestión, porque en la votación en la Conferencia de Presidentes no se reciban votos del grupo de trabajo de los miembros del Grupo Socialista responsable de esta cuestión.
99
+ No sé si esta información es correcta, pero el Grupo PPE-DE sera, en cualquier caso, gratificado si esta cuestión fue eliminada porque el Parlamento ha abordado esta cuestión hace varias veces.
100
+ También se han adoptado decisiones contra un impuesto de este tipo.
101
+ Por eso mi Grupo movió a eliminar esta cuestión de la agenda.
102
+ Gracias, seor Poettering.
103
+ Ahora escuchamos el Sr. Wurtz hablando contra esta solicitud.
104
+ Seora Presidenta, quisiera mostrar el falta de lógica del Sr. Poettering, ya que acabó de predicar a la Grupo del Partido de los Socialistas Europeos porque regresaron a una decisión tomada perfectamente clara en la Conferencia de Presidentes, y ahora él está haciendo el mismo mismo.
105
+ Por qué es el trabajo del trabajo? Por qué es el trabajo del trabajo? Por qué es el trabajo del trabajo? Por qué es el trabajo del trabajo? Por qué es el trabajo del trabajo?
106
+ Estamos debatiendo esa cuestión y estamos unidos, con la excepción de los Grupos PPE y ELDR. Como yo recordará, yo he mencionado que no era una cuestión de saber si uno estaba contra o contra el impuesto de Tobin, sino de saber si uno escuchó escuchar lo que la Comisión y el Consejo pens
107
+ No hay mucho para preguntar.
108
+ Por tanto, repetiré el propuesto de que esta cuestión oral a la Comisión y al Consejo debera ser conservada para que podemos encontrar una vez y para todos, las posiciones de estos dos organismos sobre el propuesto relativamente modesto pero que dara un mensaje claro a la opinión pblica, especialmente después de la t
109
+ Vamos a votar sobre la solicitud del Grupo PPE-DE de que la cuestión oral sobre el impuesto de capital debe ser retirado del orden del ao.
110
+ (Parliamento rechazó la solicitud, con 164 votos para, 166 votos contra y 7 abstentiones)
111
+ Seora Presidenta, quisiera agradecer a el Sr. Poettering por la publicación de este debate.
112
+ Muchas gracias.
113
+ Seora Presidenta, ya he llegado el voto? No tena que votar en el medio electrónico, pues no tiene una carta.
114
+ Mi voto fue "en favor".
115
+ Seora Presidenta, la Presidencia ya ha declarado el resultado de la votación.
116
+ No hay lugar para las enmiendas.
117
+ Seora Presidenta, en el voto antes -y yo acuerdo a su decisión sobre este asunto - en el tema del plan estratégico de la Comisión me indica que quisiera hablar ante la votación en nombre de mi Grupo.
118
+ Esto no sucedió.
119
+ Me gustara que, en el final de esta cuestión de negocios, puedo dar una explicación de voto en nombre de mi Grupo.
120
+ Este es una cuestión importante.
121
+ Seora sera til para el registro de la Casa destacar cómo la gente percepciona lo que hemos hecho en el luz de su propio análisis poltico.
122
+ Seora Presidenta, no quiero reunir el debate, pero también yo haba solicitado el puerto, commentando el propósito del Sr. Barón Crespo.
123
+ No me llamó a m.
124
+ Estoy regrettable, pero el voto ha sido tomado y la decisión ha sido finalizada, entonces dejamos dejarnos de eso.
125
+ Estoy muy sorry, el Sr. Hänsch y el Sr. Cox. No veo que te preguntara hablar.
126
+ Sin embargo, creo que las posiciones son bastante claras y serán ingresadas en los Proyectos.
127
+ Cuando adoptamos los Proyectos para el sábado semana, todos los miembros que creen que las posiciones no se explican claramente pueden solicitar mejoradas.
128
+ Esto me parece ser una solución posible.
129
+ Por supuesto, los Proyectos para el sábado se toma en cuenta cualquier explicación adicional.
130
+ Creo que esto es un mejor solución que procediendo ahora a explicaciones extremadamente difciles de votos.
131
+ Seor Cox, Seor Hänsch, esto sera aceptable para ustedes?
132
+ Seora Presidenta, si el voto recorda correctamente cómo mi Grupo votado, yo no yo no puedo oponerse a eso.
133
+ Si su dictado es que no puedo dar una explicación de voto, acepto eso, pero con reservas.
134
+ Advisadores de seguridad para el transporte de mercancas peligrosas
135
+ El segundo asunto es el informe (A5-0105/1999) del Sr. Koch, en nombre de la Comisión de Poltica Regional, Transporte y Turismo, sobre la posición comuna adoptada por el Consejo con el fin de adoptar una directiva del Parlamento Europeo y del Consejo sobre la armonización de las requisitos de examinación para los ayudas de se
136
+ Seor Comisario, Seor Presidente, hombres y hermanos, puedo ser bastante frank en decir que me agradezco a la posición comn del Consejo sobre la armonización de la formación de ayudas de seguridad para el transporte de mercancas peligrosas por carretera, ferrocarril o agua inlanda.
137
+ En primer lugar, necesitamos actuar a nivel formal para cumplir los requisitos de la Directiva 96/35/CE, que oblige a los Estados miembros a appointar consejos de seguridad y organizar la formación, enseanza y examinación de estos personas, pero no explica esto explcitamente.
138
+ En segundo lugar, adoptando este directivo conseguimos a) un aumento en la seguridad cuando los bienes peligrosos se transportan tanto como transhibados; b) una reducción de las discorsións de la competencia resultada de varias variaciones de las estructuras de formación nacionales y de los costes de formación y c) oportunidades
139
+ En tercer lugar, este directivo, como está actualmente en el posición comn, garantiza -en particular porque se confine exclusivamente a los normativos minimos - una alta grado de flexibilidad y una regulación modesta de la Unión Europea; adoptandolo contribuye a que los Estados miembros tienen un alto nivel de responsabilidad individual.
140
+ Todo esto está en acuerdo con el principio de subsidiariedad y por lo tanto se tiene una gran agradección.
141
+ Nuestras enmiendas desde la primera lectura han sido consideradas muy satisfactoriamente.
142
+ Se han aceptado o transposado sin cambio en la sustancia, o se han retrasado porque no se han incluido las resoluciones correspondientes europeas, por ejemplo un sistema de penalidades para las violaciones de las reglas o una estructura compleja de clasificación para grupos relacionados de preguntas.
143
+ El nico modificado unanimamente adoptado del Comité de Polica y Transporte Regional, que se refiere al tiempo de implementación del direktivo, es algo que yo espero apoyar.
144
+ En no escribir un fecha especfico para las Estados miembros de implementar el Directiva y en vez de darles un perodo de tres meses después de su entrada en va, introducemos una clausura de flexibilidad que garantiza que el Directiva será implementado sin embargo.
145
+ Quiero esfuerzo a aprovechar esto.
146
+ Seora Presidenta, no podemos y no debemos aceptar el hecho de que nos escuchamos cada vez más frecuentes de accidentes que causan grandes daos en nuestros caminos, pero también en nuestros ferrocarrils y aguas, no solo, sino por lo menos parte, porque aquellos implicados no toman el transporte de bienes pe
147
+ Como Austriano, yo tengo an una memoria vivida, como creo, todos lo hacemos, de la catástrofe que costó tantos vidas vidas vidas el ao pasado en el Tnel de Tauern, donde el trabajo posterior para reconstruir las partes del Tnel que haban estado destru
148
+ El proyecto de renovación, que duró meses, detuvo esta importante ruta entre el norte y el sur de Europa.
149
+ El tráfico que tena que ser divertido por eso extiende la paciencia de muchos mil millones de personas en la UE hasta el lmite.
150
+ De hecho, todo el hierro se enfrentó en algunos municipalidades de mi provincia.
151
+ La prevención debe ser nuestra respuesta a desastres de este tipo, y este proyecto de directiva es un paso importante para que se encuentra a los ayudantes de seguridad bien trabajados, para que las acciones adecuadas se pueden aprovechar en buen tiempo.
152
+ Todos los mismos no debemos contarnos con el aprobación de la ley europea para garantizar una mayor seguridad.
153
+ También necesitamos seguir esto y asegurar que nuestros reglas se traducen por los Estados miembros en buen tiempo y -an más importante - necesitamos seguir que también se aplican después.
154
+ Por favor, no esto no es an otro sector donde a continuación tenemos que lamentar la falta de ejecución.
155
+ Quisiera abordar una ltima cosa: no nos debes contentarnos con escribir una cierta cada en el netto de seguridad y dejarnos de nuestros ojos a la hecho de que, en cuanto a la seguridad del transporte en Europa, hay mucho más que hacer.
156
+ En este contexto, quisiera obtener una petición y pidiendo al Comisario responsable, que está junto aqu hoy, que puede presentar un texto apropiado ahora posible con el fin de continuar a hacer seguro para el tráfico a tunneles de transición en el futuro, para que nosotros, en Europa, no tenemos que experimentar
157
+ Seora Presidenta, en primer lugar quiero agradecer a el Sr. Koch por su informe que tiene, en su corazón, el tema de la seguridad del transporte.
158
+ El informe aborda el tema de la armonización de las requisitos de examinación para los ayudantes de seguridad trabajando en las áreas de transporte de mercancas peligrosas por carretera, ferrocarril y agua inland.
159
+ Congratulo él por su excelente informe.
160
+ La seguridad del transporte ha sido gravemente en las noticias recientemente: el accidente de la ferrocarril de Paddington en Londres, el terrible accidente de la ferrocarril de Noruega, los dos crashes aviarios que implican los ciudadanos de la UE y el desastre natural que implica el Erika de Brittany - todos en los ltimos cuatro
161
+ El rapportor ha enseado a la Casa que, en su posición comn, el Consejo ha aceptado seis de los diez amendamentos del Parlamento presentados en primera lectura y que el contenido de los otros amendamentos del Parlamento ha sido conservado.
162
+ Por tanto, mi Grupo apoyará la posición comn y esperará el aprobación de la legislación que nos ofrece ahora otro instrumento en nuestra lucha para hacer el transporte en la Unión Europea tan seguro como posible.
163
+ En cuanto a la seguridad, mi Grupo apoyará siempre cualquier iniciativa para mejorar la seguridad del transporte.
164
+ Estamos an teniendo mucho trabajo en este ámbito como las ltimas acontecimientos han demostrado.
165
+ Seora Presidenta, quisiera hacer algunos comentarios.
166
+ Quisiera, en primer lugar, agradecer a los ponentes por su trabajo extraordinariamente preciso y técnico sobre el informe y, en segundo lugar, a la Comisión por la propuesta que ha presentado.
167
+ Estamos preocupados aqu con la armonización de las requisitos de la examinación, pero también con las requisitos minimos.
168
+ Esto es una página, en un sentido.
169
+ Por supuesto, la seguridad en las calles, las ferrocarrils y las aguas inlandes es de importancia clave y, dado la naturaleza internacional de estos tipos de transporte, debe también armonizar la formación para los ayudantes de la seguridad, as como las requisiciones del nuevo ADR, por ejemplo,
170
+ Esto es importante, pero también es la ejecución, y hay, por supuesto, una serie de razones por las que debemos tener especial atención a esto.
171
+ Sólo pensan en los accidentes en las calles que se han ocurrido durante los ltimos aos, por ejemplo en Bélgica, los Pases y en algunos otros pases, donde los camiones que transportan mercancas peligrosas continuaron a conducir en condiciones fros cuando realmente deberan
172
+ O barcos de Europa del Este que mooran adyacentes a las barcos aqu, con todos los riesgos evidentes que esto implica.
173
+ De hecho, se ha hecho que la investigación en las puertas de Belgium, Finlandia, pero también en Japón ha mostrado que el 50% de los contenedores con un cargo parcialmente peligroso no se encarga correctamente para el envo.
174
+ Por supuesto, la cuestión es una importante.
175
+ Si miramos la situación en cuanto a las ayudas de seguridad, en una serie de pases es obligatoria emplear esas ayudas de seguridad en las empresas desde el 1 de enero de este ao.
176
+ Existirá problemas majores con el cumplimiento de este regla en el momento, especialmente con las empresas más pequeas, ya que estos no podrán proporcionar consejos de seguridad.
177
+ Estas empresas más pequeas ocupan de su carga o combinanla con otro carga, lo que causa problemas.
178
+ Por tanto se requerirá también que las certificaciones ISO 9002 pueden incluir más detalles de estos actividades en forma de informes anuales y análisis de la compaa.
179
+ El trabajo es haciendo. Todo lo que ocurre es el negocio de la ejecución.
180
+ Quiero mencionar un punto final.
181
+ En cuanto a la aplicación, también se debe concluir acuerdos adecuados con los pases de Estado de Europa porque no entienden en tratamientos que tratan de esta cuestión hasta el 1 de julio de 2001, es decir, en 18 meses.
182
+ Esto le da una ventana competitivo para el perodo intermedio.
183
+ Esto no es en s mismo nada dreadful, pero deberamos priorizar especialmente los aspectos de seguridad para los bienes transportados por carretera, ferrocarril y aguas inlandes y incorporarlos, como parte del acquisito comunitario, en el momento posible y presentarlos a los Estados adicionales.
184
+ Seora Presidenta, la importancia de la seguridad del transporte se encuentra regularmente en este Parlamento, y adecuadamente so.
185
+ El volumen cada vez creciente de mercancas que pasan a través de Europa implica todo tipo de riesgos, conocidos y desconocidos, para los empleadores y el entorno social.
186
+ Las personas que tienen que tratar de estos riesgos deberán cumplir con requisitos rigurosos.
187
+ Las normas pertinentes que se han establecido en otro Directivo, 95/35/CE, parecen suficientemente adecuados para asegurar a la gente de manera responsable sobre la organización del transporte de mercancas peligrosas.
188
+ Estoy muy satisfecho de que también se ha obtenido una acuerdo con el Consejo sobre normas mnimas sobre las examinaciones, aunque me gustara haber establecido que se han establecido normas uniformes, establecidas y módulos, para que los certificados seran de valores igualmente internacionales
189
+ Sin embargo, esto no parece posible.
190
+ Finalmente, el enmiento presentado por el ponente es perfectamente lógico y puedo, por tanto, darle mi apoyo todava.
191
+ Seor Presidente, seor Comisario, yo quiero agradecer a el Sr. Koch por sus informes que, aunque son técnicas, son sin embargo muy importantes para la seguridad.
192
+ Quiero hacer algunos comentarios.
193
+ En primer lugar, quisiera preguntar al Comisario -y yo estoy convencido que mi requerio va a caminar en tierra fertile - para asegurar que haya más atención a la cuestión de seguridad, en las calles, en las aguas o en el mar.
194
+ Recuerdo que sólo hoy estamos tratando de una propuesta de la Comisión primera elaborada el 19 de marzo de 1998, aunque el Parlamento respondió relativamente rápidamente, esta tarde es un poco demasiado larga.
195
+ Esto no es sólo la causa de la Comisión, pero creo que necesitamos tomar acciones más rápidas para lograr una armonización en este ámbito.
196
+ Mi segundo punto ha sido mencionado: se refiere a los estándares minimos.
197
+ En principio, creo que en muchos casos sobre el transporte deberamos estar trabajando hacia una mayor ampliación de flexibilidad y reglas especficas del pas.
198
+ Sin embargo, en cuanto a la seguridad, soy más sceptical porque la seguridad en Suecia, por ejemplo, no es en principio diferente de la seguridad en Alemania, Italia o Austria.
199
+ Me puedo vivir con estas normas mnimas, pero le ped a la Comisión de mantener la situación muy cuidada.
200
+ Si la flexibilidad de este tipo resulta en que hay reglas inadecuadas en algunos pases, entonces deberamos trabajar hacia una mayor armonización.
201
+ También se ha mencionado mi tercer punto. Como sabes, como el seor Rack, viene de un pas de transición, donde esta cuestión tiene un rol particularmente importante.
202
+ No quieremos hacer las condiciones de competencia mejoras para algunos pases unilateralmente y mejorarlas para pases como Austria o otros pases en el transcurso.
203
+ Pero creo que debemos hacer todo lo que podemos hacer para mantener el transporte de mercancas peligrosas a un mnimo, en todos los pases, si ellos son pases de transito o no.
204
+ Seor Presidente, quisiera en primer lugar felicitar el ponente, el Sr. Koch, por su magnfico trabajo y su cooperación positiva con la Comisión en materia de mejorar los textos y presentar este informe y este propuesto; en el final hay solamente una modificación sobre las requisitos para el examen de aptitude para los ayudas de
205
+ Conocemos que es importante que los dos instituciones - Parlamento y Comisión - cooperan y trabajan juntos y que la cooperación actual con la Comisión de Politica Regional, y en particular con el grupo de transporte, es magnfico.
206
+ La posición comuna incluye práctica todas las enmiendas aceptadas por la Comisión y armoniza las requisitos de examinación mnima para los ayudantes de seguridad, y, en el segundo lectura, podemos aceptar la enmiendas en el fecha propuesta, que es mucho más realista que el original
207
+ A veces, quisiera agradecer a los diversos deputados por sus intervenciones y decirles que la seguridad es una de las prioridades de la Comisión en el campo del transporte.
208
+ Como el seor Simpson ha dicho muy correctamente, esto es un proceso que nunca podemos tener de acuerdo o considerarse como terminar.
209
+ El proceso de aumentar las margenes de seguridad y garantas de seguridad en el transporte es un proceso que debe mejorar da a da.
210
+ En este sentido, también quisiera referir muy brevemente a los problemas de los tunneles, que los Messrs Rack y Swoboda han referido, que, en el caso de Austria, es, sin duda, una cuestión muy sensible y debe ser esfuerzos para mejorar su seguridad.
211
+ En uno de los peores accidentes que han ocurrido recientemente, los bienes transportados no fueron peligrosos en s mismos.
212
+ Margarine y algunos kilos de pintura que, en principio, no presentan riesgos, llevó a una realidad de desastre.
213
+ Por tanto, tenemos que ver cómo las requisiciones que garantizan el grado máximo de seguridad pueden ser mejoras.
214
+ Finalmente, quisiera decir que tenemos que considerar la seguridad en todas las tipos de transportes.
215
+ Esta semana tenemos un debate aqu sobre la seguridad del transporte amarillo, en cuenta del desastre de Erika, y en el curso de este ao tenemos que discutir nuestros objetivos en materia de seguridad del transporte aéreo.
216
+ Pero quiero decir que la seguridad es un objetivo prioritario para la Comisión.
217
+ Como digo en el debate sobre el desastre de Erika, no esperamos que hay un desastre para abordar la cuestión de seguridad, pero trabamos en él an cuando no hay otras circunstancias, que simplemente serven a demostrar la urgencia para una respuesta efectiva a este tipo de problema.
218
+ Quisiera repetir mi aprecio a todos los pueblos y especialmente a el rapportor, el Sr. Koch.
219
+ El debate está cerrado.
220
+ La votación se celebrará miércoles a las 12 p.m.
221
+ Transporte de bienes peligrosos por carretera
222
+ El segundo asunto es el informe (A5-0104/1999) del Sr. Koch, en nombre de la Comisión de Poltica Regional, Transporte y Turismo, sobre la propuesta para un direktivo del Parlamento Europeo y del Consejo modificando el Directive 94/55/CE sobre la aproximación de las leyes de los Estados miembros sobre el transporte de bienes pelig
223
+ Seor Presidente, seor Comisario, hombres y hermanos, la directiva sobre el aproximación de las leyes de los Estados miembros sobre el transporte de mercancas peligrosas por carretera, que entró en va el 1 de enero de 1997, contiene una serie de disposiciones de transición que sólo son validas durante
224
+ Los delayes en el trabajo del CEN son ahora difciles de aplicar este mismo directivo.
225
+ En particular, las anexas no pueden ser adaptadas para tener en cuenta las evoluciones técnicas y industriales.
226
+ Estoy regrettable porque tenemos que tomar acciones porque otros no ha hecho su trabajo.
227
+ En este sentido, me acepto este propuesto de modificación de la Directiva 94/55/CE que se ha presentado para discusión hoy.
228
+ Si la Unión Europea no tiene acción, entonces los Estados miembros seran obligado a modificar su legislación nacional durante un perodo muy breve, hasta que el CEN completa su trabajo, lo cual causara costes y incertidumbres.
229
+ La enmienda a la directiva sobre el agenda de hoy no afecta por ello la armonización existente del transporte de mercancas peligrosas en la Comunidad.
230
+ Se prolonga a sólo las reglas de transición mediante prolongar los tiempos, eliminar las disposiciones que no son aplicables, y establece los procedimientos para a) realizar el transporte ad hoc de mercancas peligrosas y b) adoptar reglamentos nacionalmente menos stringentes, en particular para el transporte de muy pequeos cantidade
231
+ La enmienda a la directiva está, por consiguiente, en completo acuerdo con el principio de subsidiaridad; los Estados miembros obtienen más poderes.
232
+ La Comisión decidió si los Estados miembros pueden impunir ciertas reglas de sus propias propias.
233
+ En ese caso, es apoyado por un comité de expertos sobre el transporte de mercancas peligrosas en el procedimiento de regulación.
234
+ Las procedimientos para el ejercicio de estos poderes de implementación conferidos a la Comisión se han establecido de nuevo en la Decisión del Consejo de junio de 1999.
235
+ La propuesta que se debatirá hoy, para modificar el direktivo sobre el transporte de bienes peligrosos por carretera, se encuentra desde el mes de mayo de 1999, sin embargo no poda tener en cuenta el procedimiento comitórico más reciente.
236
+ Dos de las enmiendas presentadas y adoptadas unanimamente por el comité se refieren precisamente a este procedimiento de comitology modificado.
237
+ Aqu quieremos asegurar que hay referencia a esto an como las reflexiones y que el perodo dentro del cual el Consejo tiene que hacer una decisión - que no se manifiesta claramente - está en el mes máximo de tres meses.
238
+ Además, se ha mencionado el necesidad de una mayor transparencia.
239
+ Una otra enmienda permitirá a los Estados miembros imposer requisitos más rigurosos, en particular para los vacos, si se realiza trabajo o se transportan bienes como prioridad en temperaturas muy bajo -20oC.
240
+ Esto es en el interés especial de las regiones del norte de Europa.
241
+ Se propone una modificación final para asegurar que los tanques y tanqueros que están en servicio entre 1 de enero de 1997 y el entonces en va de esta directiva se pueden continuar utilizando si ellos se han construdo y mantenido en acuerdo con él.
242
+ Estoy consciente de que esto es sólo un paso pequeo hacia una mayor seguridad en el transporte, pero quisiera aprovechar esta informe.
243
+ Seor Presidente, colegas, un ao feliz y millennio a todos.
244
+ Estoy hablando por primera vez en esta sesión plenaria, por lo que esto es bastante éxciting para m, un poco como primer amor, aunque eso duró más de dos minutos.
245
+ Quisiera comenzar brevemente sobre la propuesta de la Comisión de modificar la directiva sobre el transporte de bienes peligrosos por carretera.
246
+ Es bueno que esta directiva debera ser establecida ahora, ya que, otras veces, los Estados miembros deberan modificar sus actos nacionales por un tiempo muy poco, un periodo de transición, que ahora significara costes inutiles y que una vez más aumentara la preocupación con respecto a la burocracia de la UE
247
+ Sin embargo, la propuesta de la Comisión no toma en cuenta todas las hechos, como el clima fro que predomina en las regiones norteamericanas.
248
+ En consecuencia, yo ha presentado algunas mejores modificaciones al informe intrnsecamente excelente del Sr. Koch, que se han adoptado por nuestro comité.
249
+ Mi enmiendos se refiere a las calificaciones de resistencia de frost para los tankeres que transportan estas mercancas peligrosas.
250
+ De acuerdo con la propuesta de la Comisión, -20oC debera haber sido suficiente. En las calles del Mediterráneo, es difcil imaginar que en las temperaturas del Lapland se pueden reducir considerablemente más altos que eso.
251
+ También hay apoyo a la UE en Lapland, as que nos recordamos ellos.
252
+ As que he propuesto que la calificación del frost se reducirá a -40oC.
253
+ Esto sera necesario para mantener las normas de seguridad en el nivel en las regiones norte anteriores.
254
+ Espero que mi propuesta será considerada en el voto de morir.
255
+ Seor Presidente, con su permiso, quisiera empezar a expresar mi admiración por el camino en el cual usted ejecutó el cambio rápido de la presidencia ahora durante el debate.
256
+ Mi pensamiento es que era bastante espectáculo.
257
+ En cuanto a la cuestión, creo que el pueblo de Europa debe ser capaces de ser confiado que los bienes -también peligrosos que son - que se transportan en las calles, las ferrocarrils, etc. - son tan seguros como posible.
258
+ Esta directiva es una contribución a esto.
259
+ Lo que estamos haciendo hoy es esencialmente una nia.
260
+ El ponente, el Sr. Koch, a quien nos expresamos nuestros agradecimientos por el trabajo que ha hecho sobre esto, ha agregado ya que basicamente todo podra haber sido algo más avanzado si no fue por la inacción del CEN, que ha sido muy dilatorio en el desarrollo y adapta
261
+ Por eso podemos sólo esperar -y deberamos resolver todo esto este semana - que, en 2001, finalmente, tenemos reglamentos de la Comunidad para el transporte de mercancas peligrosas por carretera, para que tenemos un grado de certificación jurdica aqu y también para que nuestros caminos son muy se
262
+ Seor Presidente, el informe que estamos debatiendo aqu no implica en s mismo cambios importantes.
263
+ La mayora de las enmiendas propuestas son de naturaleza sólo técnica.
264
+ Sin embargo, es necesario subrayar que, cada vez que hagamos este tipo de decisión, es bueno de una amplia perspectiva medioambiental y es beneficioso porque crea mejores condiciones para explotar las posibilidades del mercado interior.
265
+ Se transportan muy grandes cantidades de bienes peligrosos a través de la UE, tanto en las calles como en las ferrocarrils y en el mar.
266
+ Esto es necesario tener reglas adecuados para el transporte de este tipo.
267
+ En área tras área, ahora obtenemos reglamentos mnimas comunes para los Estados miembros.
268
+ Esto es extraordinariamente positivo, y hay causa de agradecer a la ponente, el ponente Koch, por el trabajo que ha hecho sobre este tema.
269
+ Esto es también importante en cuanto a los prerequisitos para el mercado interior.
270
+ Si quieremos recibir un mercado de transportes comunes en realidad, es importante que no sólo tenemos reglamentos, sino que estos reglamentos también se aplican a todos los pases.
271
+ Quisiera terminar con el comentario sobre una tercera cuestión que también es de significado, es decir, una enmienda presentada por el miembro del Parlamento, el Sr. Ari Vatanen.
272
+ En muchos modos, los prerequisitos diferencian de un Estado miembro a otro.
273
+ Al aprobar esta enmienda, tomamos el hecho de que puede ser muy fro en las partes norte de la Unión Europea.
274
+ Esto es necesario también tener en cuenta las maneras en que los materiales y el paquete están afectados por el fro de este tipo.
275
+ Es bueno que, en el establecimiento de las presentes reglamentos, también podemos ser flexibles.
276
+ Estoy esperando que la Comisión puede aceptar el presente enmienda.
277
+ Seor Presidente, quisiera agradecerle no sólo a el Sr. Koch, sino también a el Vicepresidente de la Comisión por el modo claro y ambiguo en el que han declarado su apoyo a la seguridad en el sector del transporte y reconocién como prioridad.
278
+ La razón por la que el Sr. Koch presentó su esfuerzo informe fue porque el trabajo en la Comisión Económica de las Naciones Unidas y en la Comisión Económica de las Naciones Unidas estaba procediendo no demasiado expeditivo.
279
+ Quisiera preguntar a la Vicepresidenta si ella está en posición de diciendo hoy qué está el estado de juego con respecto a las esfuerzos para la armonización que se realizan estos dos organizaciones, y si el EU está en posición de tener estas esfuerzos para la armonización, a través de principio
280
+ Porque una cosa es clara: incluso si lleguemos a un excelente acuerdo dentro de la Unión Europea, el tráfico no está pasando en nuestras fronteras, es más allá de ellos.
281
+ Por tanto, hay ciertamente todos los motivos para introducir disposiciones regionales más amplias.
282
+ Si el Comisario no puede hacerlo hoy, entonces será preparado de informar a la comisión en escrito cómo se está situando las cuestiones y cuáles están las negociaciones entre el CEN y la Comisión Económica?
283
+ Seor Presidente, quisiera una vez más felicitar a el Sr. Koch por su magnfico trabajo sobre este otro informe, que complementa en una manera el debate que tenamos en octubre sobre el transporte ferrocarril.
284
+ Todos nos regretamos que el Comité Europeo para la Standardización (CEN) no ha sido posible, en el tiempo requisito, realizar la enmienda de las disposiciones necesarias para la armonización necesaria dentro de la Unión Europea.
285
+ Este debate y la enmienda del direktivo actualmente en va permiten incorporar elementos diferentes que demostrar la diversidad de este Europa de nuestro.
286
+ Hace un momento, el Sr. Vatanen nos habló de temperaturas menos bajas, no de 20 grados bajo el cierre, sino de 40 grados bajo el cierre.
287
+ Por supuesto, aceptamos esa enmienda -es absolutamente correcto - y creo que debe incorporar circunstancias especficas que demostram la diversidad climática de la Unión Europea, que a veces tienen formas de especficas y de requisitos concretos para la establección de normas y caracterizaciones de naturaleza técnica.
288
+ Quisiera decir, en relación a las comentarios del Sr. Swoboda sobre la actividad de la CEN, que le entramos a ellos a acelerar su trabajo como mucho posible porque sera terrible si, a pesar del nuevo plazo, nos encontraramos después de un ao y un poco con las mismas dificultades porque
289
+ Por ltimo, seor Presidente, seoras, seoras, los problemas básicos que justifican este modificación del direktivo se han mencionado: hemos referido a la tarde del CEN, la modificación de algunas disposiciones, la coherencia entre el texto del direktivo y el contenido de los anexos y la neces
290
+ La Comisión acepta todas las contribuciones del comité parlamentario y del relator, el Sr. Koch, que se contenen en las diversas enmiendas, especficamente cuatro.
291
+ Por tanto, aceptamos los cuatro enmiendas que se han propuesto.
292
+ El debate está cerrado.
293
+ La votación se celebrará miércoles a las 12 p.m.
294
+ Fondos estructurales - Coordinación del Fondo de Cohesión
295
+ El segundo asunto es el informe (A5-0108/1999) de la seora Schroedter, en nombre de la Comisión de Poltica Regional, Transporte y Turismo, sobre la comunicación de la Comisión en el campo de los Fondos estructurales y su coordinación con el Fondo de Cohesión: orientaciones para programas en el periodo 2000-2006 [COM(199
296
+ Seor Presidente, es particularmente grato que me hace mi primer discurso en el Parlamento Europeo sobre lo que se considera como el tema más importante dentro de esa parte del Reino Unido que represento en este Parlamento, es decir, Wales.
297
+ Una mayor parte de Wales, como sabes, ha sido concedida la estatus de Objetivo 1 en el programa de Fondos estructurales.
298
+ Es muy claro que muchas personas dentro de Wales están buscando el programa de Fondos estructurales europeos para ayudar a algunos de los grandes dificultades que nos encontramos sin duda.
299
+ Hemos visto el pobreza creciendo en Wales; y creciendo an más desde 1997.
300
+ Hemos visto el pérdido entre los ricos y los pobres.
301
+ Por tanto, estamos buscando en el programa de Fondos estructurales no sólo para ver la restructuración industrial, sino también para ver una mejora en toda la base económica dentro del Principalidad.
302
+ Sin embargo, lo que es profundamente difcil para nosotros es la creencia de que en alguna manera el asistencia de los Fondos estructurales es algo que ha sido, en un sentido, un éxito del gobierno.
303
+ Esta es nadie una reconocimiento de las muy grandes dificultades que en Wales se enfrentan.
304
+ Por eso quiero mostrar algunas de las cuestiones que creo que la Comisión debe tener en primer lugar.
305
+ Se encuentra a la Comisión para abordar puntos en relación con el adicionalidad.
306
+ Estamos dissatisfiedes con el hecho de que esos cifras parecen haber sido en alguna manera ocultas dentro de las cifras del Reino Unido.
307
+ De acuerdo también a la Comisión para asegurar que haya una financiación adecuada para los proyectos.
308
+ Estamos buscando el gobierno del Reino Unido, para asegurar que el sector privado, que de hecho debe proporcionar el gran impulso para los gastos de fondos estructurales, está implicado en el estado de planificación.
309
+ Finalmente, solicitamos que la Comisión se garantiza que los dinero del Fondo estructural se pasan en una manera que es transparente.
310
+ Mucho de lo que tiene lugar dentro de este Parlamento no es transparente.
311
+ Este es un ámbito en el que creo que la Comisión puede ser un amigo muy grande a Wales.
312
+ Seor Presidente, nuestra comisión tiene vistas muy diferentes a estos asuntos y, para empezar, voy a hablar del punto de vista de la investigación.
313
+ Vemos como un signo muy positivo que, en sus propuestas, el rapportor ha tenido cuenta de la propuesta de nuestro Comité que los pases del Fondo de Cohesión deberan ampliar el infraestructura de investigación en lugar de encontrar universidades y académicos en tal modo que serviran a los que viven en
314
+ Esto será posible con las acciones de los gobiernos, y esa decentralización de la educación superior será una poltica incondicionalmente tile en el desplazamiento del desarrollo.
315
+ Alguna cuestión que quisiera abordar, especficamente del punto de vista de la poltica industrial, es que nosotros tenamos que la Comisión tener más atención a los efectos de los servicios, el comercio electrónico y el creciente uso de Internet, cuando planificaron la coordinación de los Fondos estructurales y los Fondos de cohe
316
+ La pobreza y la riqueza dependan más de los métodos de subsistencia.
317
+ Las riquezas fueron los que hubieran trabajos en la industria, pero hoy esos áreas podran haber convertido en un pago, y pueden bien ser pobres, de modo que también tenemos que investir en nuevas sectores de la industria, tales como la producción electrónica, como podra llamarlo, y la producción de servicios,
318
+ En mi opinión, el comité que escrito el informe no ha tenido cuenta suficiente de esto, as que, en nombre de la Comisión de la industria, del comercio externo, de la investigación y de la energa, yo dira la atención de la Comisión a esta cuestión.
319
+ Finalmente, como el comité representante la energa, podramos haber gustado que la cuestión de soporte para los recursos de energa renovables de los fondos de cohesión y de desarrollo regional haber sido accentuado an más, por tanto, a través de un proceso de coordinación, aumentar la utilización de los
320
+ Seor Presidente, quisiera mucho agradecer a la seora Schroedter por el trabajo que ha hecho sobre esto y explicar a los colegas que estoy hablando para mi colegas, la seora Flautre, que seguió esto para el Comité de Empleo y Asuntos Sociales, pero que es casi infección.
321
+ Agradezco a la atención de la gente a las enmiendas 1 y 2 que fueron convencidas por el Comité de Empleo y Asuntos Sociales, pero no aceptadas por el Comité de Poltica Regional, Transporte y Turismo.
322
+ Estas enmiendas se refiere a la economa social y a la necesidad de proporcionar capital de riesgo social y apoyar sistemas locales financieramente locales para desarrollar oportunidades de ocupación y fortalecer la cohesión social.
323
+ En el pasado, este Parlamento ha visto el economa social como un potencial proveedor potencial de ocupación.
324
+ Estas enmiendas también se ajustan a la opinión de este Parlamento de que el exclusión social es una cuestión grave que necesita una acción constructiva.
325
+ Estamos esperando que los que consideran la respuesta de estas enmiendas tienen motivos muy poderosas para ofrecer a ambos Parlamentos como a sus ciudadanos que buscan empleo.
326
+ En su informe, la seora Flautre también atraa el atención a un ámbito donde la coordinación está sencilla, sin embargo necesaria.
327
+ Las propuestas de la Comisión se refiere a los cuatro pilares de la estrategia de empleo y a los cinco campos de acción del Fondo Social Europeo.
328
+ Pero el falta de directrices especficos aqu está particularmente regretido, ya que la idea de ligar la asistencia del Fondo Social a la estrategia de empleo será implementada por primera vez durante el programa de 2000-2006.
329
+ Se puede decir que la omitida tiene el impresión de que también la Comisión no tiene ninguna idea de cómo proporcionar el máximo coordinación entre la asistencia del Fondo Social Europeo, que está sujeta a revisar después de tres y meses, y los planos nacionales anuales de los Estados miembros para el
330
+ Estamos esperando que la Comisión nos podra resolutarnos que esto era una supervisión que ahora se trata constructivamente.
331
+ Seor Presidente, seor Comisario, la propuesta presentada por la Comisión, a través de su mandato, es un punto razonable para el Comité de Academia y Desarrollo Rural.
332
+ Pero quiero decir que este punto de inicio nos indica los desafos que nos enfrentan: mantener una población en las zonas rurales, dada las cambios que se encuentran en todas las tipos de actividades económicas a causa del aumento de la importancia de la agricultura entre las diversas fuentes de ingresos para la sociedad
333
+ Esto, además de las deficiencias en las redes de infraestructuras y servicios y de un nivel muy bajo de empleo, generalmente muy bajo, que además es temporales y no tiene diversidad, agrava la exodus de las zonas rurales.
334
+ Las consecuencias no inspiran la esperanza.
335
+ Están los jóvenes que se desaparecen, que obtengan educación y encontrar trabajo en el exterior de las zonas rurales, todo lo que tiene un efecto negativo en esas zonas.
336
+ Esta falta de infraestructura es también un obstáculo para la establección de empresas y la creación de trabajos.
337
+ Tenemos que recordar que las zonas rurales representan casi cuatro quintos del territorio de la Unión Europea.
338
+ La agricultura proporciona sólo 5.5% de la ocupación en la Unión.
339
+ Además, tres cuadros de nuestros trabajadores agrcolas están trabajando durante el tiempo y necesitan complementos a sus ingresos.
340
+ Por esta razón, uno de los objetivos más importantes y esenciales que deberamos establecer en la Unión Europea es escribir esfuerzos para crear nuevas trabajos en las zonas rurales, afuera del sector agrcola, en sectores como turismo rural, el juego, la cultura, la conservación de
341
+ Por tanto, apoyamos el establecimiento de una poltica de desarrollo agrcola y rural que corresponde a los objetivos que hemos escritos. Esperamos que las zonas rurales, a principios del siglo XXI, sean competitivos y multifuncionales, tanto en relación a la agricultura como en relación
342
+ Este es importante priorizar los criterios generales para la planificación de terrestres y la equilibración demócrata, y tener en cuenta las conclusiones del Comité de Agricultura y Desarrollo Rural sobre los cinco aspectos fundamentales, que sólo se han tenido parte del Comité de Transporte, Politica Regional y Turismo en sus puntos 16 y 17.
343
+ En conclusión, quisiera a la Comisión tener estos cinco puntos en cuenta cuando establecer las conclusiones sobre los cuatro pilares porque creo que, para la Unión Europea, la mantenimiento de la población en las zonas rurales debe ser uno de los objetivos prioritario.
344
+ Seor Presidente, seor Comisario, quisiera empezar a agradecer a la seora Schroedter, el ponente, por su trabajo.
345
+ Creo que esta trabajo ha sido trabajada extremadamente bien.
346
+ También quisiera agradecerle a ella por su voluntad de entrar en un diálogo con los otros grupos polticos cuando se necesitan formulas de compromiso en el calentamiento de esta avalanza de enmiendas -y quizás hay más de ellos que somos esperados - pero que realmente reflejan el importancia del informe que esta
347
+ Estamos de acuerdo que es importante que la Comisión toma en cuenta las conclusiones adoptadas por este Parlamento, al menos en espritu, porque en este momento podra parecer que lo que estamos haciendo aqu es un ejercicio inutil, y nada sin aire caliente.
348
+ Sin embargo, la verdad de la cuestión es que creemos -y esto se muestra también en el modo en que las conclusiones se han elaborado - que la Comisión debe tener el contenido de lo que está adoptado por este Parlamento, en particular en el lugar de una revisión intermedio de estos directrices.
349
+ En nuestros amendamentos, hemos afirmado el importancia de las sinergas necesarias que se producen entre los Fondos estructurales, el Fondo de Cohesión y las iniciativas comunitarias, para que su aplicación debera ser reflejada, en el mejor y más rendido modo, por la eliminación gradual de las disparidades entre regiones y
350
+ Para lograr un impulso más rápido y eficaz para lograr estos objetivos, creemos que los que generan empleo, los empresarios reales y los que realmente garantizan nuevas fuentes de empleo, por ejemplo, los empresarios comerciales, debe participar en este iniciativo.
351
+ Las empresas pequeas y medianas deberán participar en la distribución de estos fondos.
352
+ Si no, si los empresarios se sienten marginalizadas, si los empresarios no pueden participar, no sólo en el manejo, sino también en el recibir estos fondos, habrámos olvidado una oportunidad para lograr nuestros objetivos más rápidamente.
353
+ También, para lograr nuestras objetivos, para superar las disparidades entre las regiones y para buscar fuentes de empleo, es crucial dar nuestro apoyo completo a nuevas tecnologas, a los redes de transporte y de comunicación y a las energas renovables.
354
+ Todo esto debe ser realizado -repetido - con la participación de las empresas privadas, que, uniendo sus esfuerzos con las de las administraciones pblicas, pero complementandolos, nunca obstructando o excluyendolos, conducirá a la creación de riqueza en la sociedad y de trabajos.
355
+ Seor Presidente, me tiene que recordar a mi colega, el seor Evans, por qué Wales lograron el estatus de Objetivo 1 por las polticas discreditadas de su propia Partido Conservative.
356
+ De acuerdo también que cuando su lder de partida, el Sr. Hague, fue Secretario de Estado de Wales, violó todos los reglas en el libro sobre la adicción que llevó a una sterna carta del Comisario Wulf-Mathies sobre las requisiciones reguladas.
357
+ Puedo decirles que el gobierno británico está consciente de sus requisitos reguladores sobre el adicionalidad del Objeto 1, y me sugeren que el seor Evans se vuelve y lee la normativa.
358
+ Mi Grupo ha hecho amplias enmiendas a ambas informes para debate hoy.
359
+ Quiero centrar nuestras mentes sobre el papel esencial de las directrices.
360
+ El objetivo es proporcionar un marco y un instrumento para apoyar y aumentar la regeneración económica, para obtener el uso más eficaz de los recursos en el amplio compaero y para ponerse estos regiones en el camino a recuperarse y a desarrollarse sostenibles, por el fin de
361
+ Es importante identificar las habilidades y potencialidades de nuestros regiones en el sector hi-tech.
362
+ Es especialmente importante en el luz de los informes en los medios de comunicación que Europa se pierde rápidamente el terreno a los Estados Unidos en las industrias de crecimiento hi-tech del futuro.
363
+ La operación del ro anterior de programas es también muy instructiva en diciendo cuáles no deberan ser las directrices.
364
+ No deberan estar acerca de crear capas adicionales de birocrática y tráfico.
365
+ No deberan estar acerca de cambios de prioridades y de las polticas durante el desarrollo del proyecto, resultando en inevitables retardos y subsuficiencias, especialmente en el luz del nuevo requisito budgético.
366
+ La implementación y el funcionamiento de las directrices no se puede abandonarse a la interpretación personal de uno o otro agente de escritorio, en la Comisión o en el servicio civil.
367
+ Se debe tener una coherencia interna en el directorio de la Comisión, pero respecto los aspectos locales y regionales especficos de los programas de la Comisión.
368
+ La conclusión es que debemos hacer el caso de que las directrices son amplias, indicativas y flexibles para ayudar a nuestros programadores y usuarios de fondos y para obtener el potencial máximo de nuestros nuevos campos de regeneración.
369
+ Si podemos inyectar un espritu de actividad empresariale en nuestros regiones pobres y estructurales bajas, finalmente llegarán a la camina de atracción de confianza sobre los inversionistas, que será el clave para el éxito futuro.
370
+ Esto es cómo vamos a evaluar el éxito de estas directrices: si la poltica regional de la UE, con una buena, solida, permitida orientación, puede abrir nuevas oportunidades y permitir que nuestros pobres y estructurales pequeos regiones pueden jugar el papel de contribución a la crecimiento
371
+ Seor Presidente, seor Comisario, quisiera agradecer a la seora Schroedter por un excelente informe. Se ha encontrado el tema en algn profundo y en el debate del comité tena cuenta de muchas de las enmiendas que se presentaron sobre este informe.
372
+ El ponente ha afirmado también que el Parlamento no fue escuchado en tiempo en relación con las directrices.
373
+ Ahora estamos detrás de esta cuestión.
374
+ Espero que, sin embargo, los asuntos que el Parlamento ha tomado ayudarán, sin embargo, a la evaluación de los programas en medio plazo y a su implementación práctica.
375
+ Por el tiempo, el informe creció demasiado grande cuando se estaba debatido.
376
+ Se contiene detalles y asuntos que haban abordado en los informes anteriores.
377
+ En este momento es más importante concentrarse en evaluar cómo podemos usar este proceso para dirigir la poltica regional de la Unión, teniendo en cuenta que el objetivo es reducir la incidencia regional.
378
+ Nuestra Grupo expresa el importancia del principio de subsidiaridad, de la responsabilidad de los Estados miembros y del papel de los actores locales en la elaboración y la implementación de programas.
379
+ Es especialmente importante que las IMM-ACP participan en la planificación y la implementación de programas.
380
+ Nuestra Grupo considera también importante tener en cuenta una mayor atención a las áreas distantes y periféricas y quiere aumentar la interacción entre las ciudades y las áreas rurales.
381
+ Openamos la excesiva control del administración central de la Unión y de sus Estados miembros, y llamamos una reducción de la burocracia que se ha enfrentado en la elaboración y implementación de programas.
382
+ Los proyectos implementados con apoyo de la Unión han tenido su efecto muy a menudo por las lentas decisiones y procesos administrativos complicadas.
383
+ Los fondos han sido a menudo concedidos para proyectos que no han tenido beneficios permanecionales para el alrededor del alrededor.
384
+ Los proyectos tienen que ser realizados más eficientemente, más flexivos y tienen que ser producidos más productivos.
sample_text2/en2es.translation.flanT5-large.txt ADDED
The diff for this file is too large to render. See raw diff
 
sample_text2/en2es.translation.nllb-200.8bits.txt ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Reinicio de la sesión
2
+ Declaro la reanudación de la sesión del Parlamento Europeo que se suspendió el viernes 17 de diciembre de 1999, y quisiera desearles una vez más un feliz Año Nuevo, con la esperanza de que hayan disfrutado de un agradable período festivo.
3
+ Aunque, como habrán visto, el temido 'insecto del milenio' no se materializó, sin embargo, la gente de varios países sufrió una serie de desastres naturales que fueron verdaderamente terribles.
4
+ Usted ha solicitado un debate sobre este tema en el transcurso de los próximos días, durante este período de sesiones.
5
+ Mientras tanto, quisiera observar un minuto de silencio, como han pedido varios diputados, en nombre de todas las víctimas afectadas, en particular las de las terribles tormentas en los diversos países de la Unión Europea.
6
+ Por favor, levántese, entonces, para este minuto de silencio.
7
+ (La Asamblea se levantó y observó un minuto de silencio)
8
+ Señora Presidenta, una cuestión de orden.
9
+ Usted sabrá por la prensa y la televisión que ha habido una serie de explosiones de bombas y asesinatos en Sri Lanka.
10
+ Una de las personas asesinadas recientemente en Sri Lanka fue el Sr. Kumar Ponnambalam, quien había visitado el Parlamento Europeo hace apenas unos meses.
11
+ ¿Es conveniente, señora Presidenta, que usted escriba una carta al Presidente de Sri Lanka en la que exprese el pesar del Parlamento por su muerte y las otras muertes violentas en Sri Lanka e insta al Parlamento a que haga todo lo posible para buscar una reconciliación pacífica en una situación muy difícil?
12
+ Sí, señor Evans, creo que una iniciativa del tipo que acaba de sugerir sería totalmente apropiada.
13
+ Si la Asamblea está de acuerdo, haré lo que el Sr. Evans ha sugerido.
14
+ Señora Presidenta, una cuestión de orden.
15
+ Quisiera su consejo sobre el artículo 143 relativo a la inadmisibilidad.
16
+ Mi pregunta se refiere a algo que se planteará el jueves y que entonces volveré a plantear.
17
+ El informe Cunha sobre los programas de orientación plurianuales se presenta el jueves al Parlamento y contiene una propuesta en el apartado 6 de que se introduzca una forma de sanciones por cuotas para los países que no cumplan anualmente los objetivos de reducción de su flota.
18
+ Dice que esto debe hacerse a pesar del principio de estabilidad relativa.
19
+ Creo que el principio de estabilidad relativa es un principio jurídico fundamental de la política pesquera común y que una propuesta para subvertirlo sería jurídicamente inadmisible.
20
+ Quiero saber si se puede plantear una objeción de este tipo a lo que no es una propuesta legislativa, sino un mero informe, y si eso es algo que puedo hacer con competencia el jueves.
21
+ Es precisamente en ese momento cuando, si lo desea, podrá plantear esta cuestión, es decir, el jueves anterior al inicio de la presentación del informe.
22
+ Señora Presidenta, coincidiendo con el primer período de sesiones del Parlamento Europeo de este año, se ha fijado una fecha, por desgracia para el próximo jueves, en Texas, Estados Unidos, para la ejecución de un joven de 34 años que ha sido condenado a muerte.
23
+ A petición de un diputado francés, el Sr. Zimeray, se ha presentado ya una petición, que ha sido firmada por muchas personas, entre las que me incluyo, pero yo le pido a usted, de acuerdo con la línea que sigue constantemente el Parlamento Europeo y toda la Comunidad Europea, que, utilizando el peso de su prestigioso cargo y de la institución que usted representa, haga declaraciones al Presidente y al Gobernador de Texas, el Sr. Bush, que tiene el poder de ordenar una suspensión de la ejecución y el perdón de la persona condenada.
24
+ Todo esto está de acuerdo con los principios que siempre hemos mantenido.
25
+ Gracias, señor Segni, lo haré con gusto.
26
+ De hecho, está muy de acuerdo con las posiciones que este Parlamento siempre ha adoptado.
27
+ Señora Presidenta, quisiera llamar su atención sobre un caso en el que este Parlamento ha manifestado un interés constante.
28
+ Es el caso de Alexander Nikitin.
29
+ Todos estamos satisfechos de que los tribunales lo hayan absuelto y de que en Rusia también el acceso a la información sobre el medio ambiente es un derecho constitucional.
30
+ Ahora, sin embargo, debe presentarse ante los tribunales una vez más porque el fiscal está apelando.
31
+ Sabemos, y lo hemos dicho en muchas resoluciones, especialmente durante la última sesión plenaria del año pasado, que no se trata únicamente de un asunto jurídico y que es incorrecto que Alexander Nikitin sea acusado de actividad delictiva y de traición por nuestra participación como beneficiarios de sus conclusiones.
32
+ Estas conclusiones constituyen la base de los programas europeos para la protección del mar de Barents, y por ello le pido que examine un proyecto de carta en el que se exponen los hechos más importantes y que manifieste la posición del Parlamento, expresada en las resoluciones que ha adoptado, en lo que respecta a Rusia.
sample_text2/en2es.translation.nllb-200.txt ADDED
The diff for this file is too large to render. See raw diff
 
translate.py CHANGED
@@ -8,12 +8,11 @@ from torch.utils.data import DataLoader
8
  from tqdm import tqdm
9
 
10
  from transformers import (
11
- AutoModelForSeq2SeqLM,
12
- AutoTokenizer,
13
  PreTrainedTokenizerBase,
14
  DataCollatorForSeq2Seq,
15
  )
16
 
 
17
 
18
  from dataset import DatasetReader, count_lines
19
 
@@ -30,8 +29,9 @@ def get_dataloader(
30
  tokenizer: PreTrainedTokenizerBase,
31
  batch_size: int,
32
  max_length: int,
 
33
  ) -> DataLoader:
34
- dataset = DatasetReader(filename, tokenizer, max_length)
35
  if accelerator.distributed_type == DistributedType.TPU:
36
  data_collator = DataCollatorForSeq2Seq(
37
  tokenizer,
@@ -65,8 +65,9 @@ def main(
65
  target_lang: str,
66
  starting_batch_size: int,
67
  model_name: str = "facebook/m2m100_1.2B",
68
- cache_dir: str = None,
69
- precision: str = "32",
 
70
  max_length: int = 128,
71
  num_beams: int = 4,
72
  num_return_sequences: int = 1,
@@ -77,51 +78,84 @@ def main(
77
  keep_special_tokens: bool = False,
78
  keep_tokenization_spaces: bool = False,
79
  repetition_penalty: float = None,
 
80
  ):
81
  os.makedirs(os.path.abspath(os.path.dirname(output_path)), exist_ok=True)
82
 
83
- accelerator = Accelerator(
84
- mixed_precision=precision if precision != "32" else "no",
85
- split_batches=False,
86
- dispatch_batches=False,
87
- )
88
-
89
- print(f"Loading tokenizer {model_name}...")
90
- tokenizer = AutoTokenizer.from_pretrained(
91
- pretrained_model_name_or_path=model_name, cache_dir=cache_dir
92
- )
93
- print(f"Loading model {model_name}...")
94
- model = AutoModelForSeq2SeqLM.from_pretrained(
95
- pretrained_model_name_or_path=model_name, cache_dir=cache_dir
96
- )
97
 
98
- model.eval()
99
-
100
- print(f"Preparing data...\n")
101
-
102
- if precision == "32":
103
- model = model.float()
104
  elif precision == "fp16":
105
- model = model.half()
 
106
  elif precision == "bf16":
107
- model = model.bfloat16()
 
 
 
 
108
  else:
109
- raise ValueError("Precision not supported. Supported values: 32, fp16, bf16")
110
-
111
- try:
112
- _ = tokenizer.lang_code_to_id[source_lang]
113
- except KeyError:
114
- raise KeyError(
115
- f"Language {source_lang} not found in tokenizer. Available languages: {tokenizer.lang_code_to_id.keys()}"
116
  )
117
- tokenizer.src_lang = source_lang
118
 
119
- try:
120
- lang_code_to_idx = tokenizer.lang_code_to_id[target_lang]
121
- except KeyError:
122
- raise KeyError(
123
- f"Language {target_lang} not found in tokenizer. Available languages: {tokenizer.lang_code_to_id.keys()}"
 
 
 
 
 
 
 
 
 
 
124
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
 
126
  gen_kwargs = {
127
  "max_length": max_length,
@@ -145,13 +179,18 @@ def main(
145
  f"Output file: {output_path}\n"
146
  f"Source language: {source_lang}\n"
147
  f"Target language: {target_lang}\n"
 
 
148
  f"Starting batch size: {starting_batch_size}\n"
149
  f"Device: {str(accelerator.device).split(':')[0]}\n"
150
  f"Num. Devices: {accelerator.num_processes}\n"
151
  f"Distributed_type: {accelerator.distributed_type}\n"
152
  f"Max length: {max_length}\n"
153
- f"Precision: {model.dtype}\n"
 
154
  f"Model: {model_name}\n"
 
 
155
  f"Keep special tokens: {keep_special_tokens}\n"
156
  f"Keep tokenization spaces: {keep_tokenization_spaces}\n"
157
  )
@@ -161,7 +200,7 @@ def main(
161
 
162
  @find_executable_batch_size(starting_batch_size=starting_batch_size)
163
  def inference(batch_size):
164
- nonlocal model, tokenizer, sentences_path, max_length, output_path, lang_code_to_idx, gen_kwargs, precision
165
 
166
  print(f"Translating with batch size {batch_size}")
167
 
@@ -171,6 +210,7 @@ def main(
171
  tokenizer=tokenizer,
172
  batch_size=batch_size,
173
  max_length=max_length,
 
174
  )
175
 
176
  model, data_loader = accelerator.prepare(model, data_loader)
@@ -190,7 +230,11 @@ def main(
190
  batch["attention_mask"] = batch["attention_mask"]
191
 
192
  generated_tokens = accelerator.unwrap_model(model).generate(
193
- **batch, forced_bos_token_id=lang_code_to_idx, **gen_kwargs
 
 
 
 
194
  )
195
 
196
  generated_tokens = accelerator.pad_across_processes(
@@ -253,15 +297,17 @@ if __name__ == "__main__":
253
  parser.add_argument(
254
  "--source_lang",
255
  type=str,
256
- required=True,
257
- help="Source language id. See: supported_languages.md",
 
258
  )
259
 
260
  parser.add_argument(
261
  "--target_lang",
262
  type=str,
263
- required=True,
264
- help="Target language id. See: supported_languages.md",
 
265
  )
266
 
267
  parser.add_argument(
@@ -280,10 +326,18 @@ if __name__ == "__main__":
280
  )
281
 
282
  parser.add_argument(
283
- "--cache_dir",
284
  type=str,
285
  default=None,
286
- help="Cache directory from which to load the model, or None to not cache",
 
 
 
 
 
 
 
 
287
  )
288
 
289
  parser.add_argument(
@@ -311,9 +365,11 @@ if __name__ == "__main__":
311
  parser.add_argument(
312
  "--precision",
313
  type=str,
314
- default="32",
315
- choices=["bf16", "fp16", "32"],
316
- help="Precision of the model. bf16, fp16 or 32.",
 
 
317
  )
318
 
319
  parser.add_argument(
@@ -362,6 +418,14 @@ if __name__ == "__main__":
362
  help="Repetition penalty.",
363
  )
364
 
 
 
 
 
 
 
 
 
365
  args = parser.parse_args()
366
 
367
  main(
@@ -371,7 +435,6 @@ if __name__ == "__main__":
371
  target_lang=args.target_lang,
372
  starting_batch_size=args.starting_batch_size,
373
  model_name=args.model_name,
374
- cache_dir=args.cache_dir,
375
  max_length=args.max_length,
376
  num_beams=args.num_beams,
377
  num_return_sequences=args.num_return_sequences,
@@ -383,4 +446,5 @@ if __name__ == "__main__":
383
  keep_special_tokens=args.keep_special_tokens,
384
  keep_tokenization_spaces=args.keep_tokenization_spaces,
385
  repetition_penalty=args.repetition_penalty,
 
386
  )
 
8
  from tqdm import tqdm
9
 
10
  from transformers import (
 
 
11
  PreTrainedTokenizerBase,
12
  DataCollatorForSeq2Seq,
13
  )
14
 
15
+ from model import load_model_for_inference
16
 
17
  from dataset import DatasetReader, count_lines
18
 
 
29
  tokenizer: PreTrainedTokenizerBase,
30
  batch_size: int,
31
  max_length: int,
32
+ prompt: str,
33
  ) -> DataLoader:
34
+ dataset = DatasetReader(filename, tokenizer, max_length, prompt)
35
  if accelerator.distributed_type == DistributedType.TPU:
36
  data_collator = DataCollatorForSeq2Seq(
37
  tokenizer,
 
65
  target_lang: str,
66
  starting_batch_size: int,
67
  model_name: str = "facebook/m2m100_1.2B",
68
+ lora_weights_name_or_path: str = None,
69
+ force_auto_device_map: bool = False,
70
+ precision: str = None,
71
  max_length: int = 128,
72
  num_beams: int = 4,
73
  num_return_sequences: int = 1,
 
78
  keep_special_tokens: bool = False,
79
  keep_tokenization_spaces: bool = False,
80
  repetition_penalty: float = None,
81
+ prompt: str = None,
82
  ):
83
  os.makedirs(os.path.abspath(os.path.dirname(output_path)), exist_ok=True)
84
 
85
+ accelerator = Accelerator()
 
 
 
 
 
 
 
 
 
 
 
 
 
86
 
87
+ if precision is None:
88
+ quantization = None
89
+ dtype = None
90
+ elif precision == "8" or precision == "4":
91
+ quantization = int(precision)
92
+ dtype = None
93
  elif precision == "fp16":
94
+ quantization = None
95
+ dtype = "float16"
96
  elif precision == "bf16":
97
+ quantization = None
98
+ dtype = "bfloat16"
99
+ elif precision == "32":
100
+ quantization = None
101
+ dtype = "float32"
102
  else:
103
+ raise ValueError(
104
+ f"Precision {precision} not supported. Please choose between 8, 4, fp16, bf16, 32 or None."
 
 
 
 
 
105
  )
 
106
 
107
+ model, tokenizer = load_model_for_inference(
108
+ weights_path=model_name,
109
+ quantization=quantization,
110
+ lora_weights_name_or_path=lora_weights_name_or_path,
111
+ torch_dtype=dtype,
112
+ force_auto_device_map=force_auto_device_map,
113
+ )
114
+
115
+ is_translation_model = hasattr(tokenizer, "lang_code_to_id")
116
+
117
+ if is_translation_model and (source_lang is None or target_lang is None):
118
+ raise ValueError(
119
+ f"The model you are using requires a source and target language. "
120
+ f"Please specify them with --source-lang and --target-lang. "
121
+ f"The supported languages are: {tokenizer.lang_code_to_id.keys()}"
122
  )
123
+ if not is_translation_model and (
124
+ source_lang is not None or target_lang is not None
125
+ ):
126
+ if prompt is None:
127
+ print(
128
+ "WARNING: You are using a model that does not support source and target languages parameters "
129
+ "but you specified them. You probably want to use m2m100/nllb200 for translation or "
130
+ "set --prompt to define the task for you model. "
131
+ )
132
+ else:
133
+ print(
134
+ "WARNING: You are using a model that does not support source and target languages parameters "
135
+ "but you specified them."
136
+ )
137
+
138
+ if prompt is not None and "%%SENTENCE%%" not in prompt:
139
+ raise ValueError(
140
+ f"The prompt must contain the %%SENTENCE%% token to indicate where the sentence should be inserted. "
141
+ f"Your prompt: {prompt}"
142
+ )
143
+
144
+ if is_translation_model:
145
+ try:
146
+ _ = tokenizer.lang_code_to_id[source_lang]
147
+ except KeyError:
148
+ raise KeyError(
149
+ f"Language {source_lang} not found in tokenizer. Available languages: {tokenizer.lang_code_to_id.keys()}"
150
+ )
151
+ tokenizer.src_lang = source_lang
152
+
153
+ try:
154
+ lang_code_to_idx = tokenizer.lang_code_to_id[target_lang]
155
+ except KeyError:
156
+ raise KeyError(
157
+ f"Language {target_lang} not found in tokenizer. Available languages: {tokenizer.lang_code_to_id.keys()}"
158
+ )
159
 
160
  gen_kwargs = {
161
  "max_length": max_length,
 
179
  f"Output file: {output_path}\n"
180
  f"Source language: {source_lang}\n"
181
  f"Target language: {target_lang}\n"
182
+ f"is_translation_model: {is_translation_model}\n"
183
+ f"Prompt: {prompt}\n"
184
  f"Starting batch size: {starting_batch_size}\n"
185
  f"Device: {str(accelerator.device).split(':')[0]}\n"
186
  f"Num. Devices: {accelerator.num_processes}\n"
187
  f"Distributed_type: {accelerator.distributed_type}\n"
188
  f"Max length: {max_length}\n"
189
+ f"Quantization: {quantization}\n"
190
+ f"Precision: {dtype}\n"
191
  f"Model: {model_name}\n"
192
+ f"LoRA weights: {lora_weights_name_or_path}\n"
193
+ f"Force auto device map: {force_auto_device_map}\n"
194
  f"Keep special tokens: {keep_special_tokens}\n"
195
  f"Keep tokenization spaces: {keep_tokenization_spaces}\n"
196
  )
 
200
 
201
  @find_executable_batch_size(starting_batch_size=starting_batch_size)
202
  def inference(batch_size):
203
+ nonlocal model, tokenizer, sentences_path, max_length, output_path, lang_code_to_idx, gen_kwargs, precision, prompt, is_translation_model
204
 
205
  print(f"Translating with batch size {batch_size}")
206
 
 
210
  tokenizer=tokenizer,
211
  batch_size=batch_size,
212
  max_length=max_length,
213
+ prompt=prompt,
214
  )
215
 
216
  model, data_loader = accelerator.prepare(model, data_loader)
 
230
  batch["attention_mask"] = batch["attention_mask"]
231
 
232
  generated_tokens = accelerator.unwrap_model(model).generate(
233
+ **batch,
234
+ forced_bos_token_id=lang_code_to_idx
235
+ if is_translation_model
236
+ else None,
237
+ **gen_kwargs,
238
  )
239
 
240
  generated_tokens = accelerator.pad_across_processes(
 
297
  parser.add_argument(
298
  "--source_lang",
299
  type=str,
300
+ default=None,
301
+ required=False,
302
+ help="Source language id. See: supported_languages.md. Required for m2m100 and nllb200",
303
  )
304
 
305
  parser.add_argument(
306
  "--target_lang",
307
  type=str,
308
+ default=None,
309
+ required=False,
310
+ help="Source language id. See: supported_languages.md. Required for m2m100 and nllb200",
311
  )
312
 
313
  parser.add_argument(
 
326
  )
327
 
328
  parser.add_argument(
329
+ "--lora_weights_name_or_path",
330
  type=str,
331
  default=None,
332
+ help="If the model uses LoRA weights, path to those weights. See: https://github.com/huggingface/peft",
333
+ )
334
+
335
+ parser.add_argument(
336
+ "--force_auto_device_map",
337
+ action="store_true",
338
+ help=" Whether to force the use of the auto device map. If set to True, "
339
+ "the model will be split across GPUs and CPU to fit the model in memory. "
340
+ "If set to False, a full copy of the model will be loaded into each GPU. Defaults to False.",
341
  )
342
 
343
  parser.add_argument(
 
365
  parser.add_argument(
366
  "--precision",
367
  type=str,
368
+ default=None,
369
+ choices=["bf16", "fp16", "32", "4", "8"],
370
+ help="Precision of the model. bf16, fp16 or 32, 8 , 4 "
371
+ "(4bits/8bits quantification, requires bitsandbytes library: https://github.com/TimDettmers/bitsandbytes). "
372
+ "If None, we will use the torch.dtype of the model weights.",
373
  )
374
 
375
  parser.add_argument(
 
418
  help="Repetition penalty.",
419
  )
420
 
421
+ parser.add_argument(
422
+ "--prompt",
423
+ type=str,
424
+ default=None,
425
+ help="Prompt to use for generation. "
426
+ "It must include the special token %%SENTENCE%% which will be replaced by the sentence to translate.",
427
+ )
428
+
429
  args = parser.parse_args()
430
 
431
  main(
 
435
  target_lang=args.target_lang,
436
  starting_batch_size=args.starting_batch_size,
437
  model_name=args.model_name,
 
438
  max_length=args.max_length,
439
  num_beams=args.num_beams,
440
  num_return_sequences=args.num_return_sequences,
 
446
  keep_special_tokens=args.keep_special_tokens,
447
  keep_tokenization_spaces=args.keep_tokenization_spaces,
448
  repetition_penalty=args.repetition_penalty,
449
+ prompt=args.prompt,
450
  )