memoQ 10.6 introduced a performance improvement in MT-based pre-translation. The new feature can multiply the number of translation requests sent to the MT service.
The new feature set could potentially improve translation performance, but it also carries the risk of overloading the memoQ server and the machine translation (MT) service(s).
So, it is important to understand the processing capabilities of both the memoQ server and the MT vendor's infrastructure, and to consult with the MT vendors when configuring this feature.
Overloading the memoQ server or MT provider's API can have serious consequences. Multiple calls to an API could result in temporary or permanent denial of service, which could risk using MT-based operations in memoQ.
What is parallel processing?
With memoQ 10.6, users can configure parallelism in the pre-translation.
The relevant parameters are already present in memoQ 11.0, so you can configure them without manually adding them.
It can be controlled at two levels:
- inside memoQ at MT-based pre-translation,
- in the outgoing translation requests from MT plugins to MT providers.
The second one is crucial for MT providers. This function can be controlled from MT plugins based on the memoQ MT SDK, memoQ TMS, or the memoQ desktop app.
Control in memoQ
The MT pre-translation process is accelerated by sending parallel pre-translation requests. Source segments are sent in batches to the MT providers.
The parallel processing occurs on two levels:
- the documents in the pre-translate scope,
- the engines created by the MT plugin.
To control the maximum values for these levels, use the key PreTranslate.MT.ParallelismLevel in memoQ's config files:
- For local projects - MemoQ.exe.config,
- For online projects - MemoQ Server (GUI).exe.config and MemoQ Server.exe.config. You can find them typically in C:\Program Files\Kilgray\MemoQ Server.
The maximum number of documents pre-translated in parallel and the maximum number of batches within one document pre-translated in parallel are both the square root of the PreTranslate.MT.ParallelismLevel, rounded down (in our example, they are both 10).
If ParallelismLevel is set to 1, pre-translation will run as before (memoQ processes a single document at a time and sends batches one by one to the MT providers).
If ParallelismLevel is set to 0, parallelism is controlled by the .NET runtime, and memoQ does not limit it in any way.
In case of an invalid value (any value that is not a non-negative integer), ParallelismLevel resets to the fallback value of 100.
The BatchSize parameter controls how many segments are in a batch. Its default/fallback value is 10.
Note: PreTranslate.BatchSize became configurable and is now independent of the batch size used in TM lookup and similar operations. It only controls MT-based pre-translation.
Constraint: The MT plugin itself might not be able to handle the number of segments.
Online projects have a 1-minute timeout setting, so if you send too many parallel requests (from the memoQ desktop app, using MT/AIQE resources from a memoQ TMS online project), there is a chance that memoQ won't get the answer from memoQ TMS in time, especially when the pre-translate requests have more than one selected MT provider and an AIQE provider. In such a case, decrease ParallelismLevel.
If ParallelismLevel is set too high, the MT service may throw an error (such as "Too many requests"), so when setting this value, consider how many concurrent requests does your subscription plan allow?
Control in MT plugins
In version 10.6, each MT plugin's engine has a new property: MaxDegreeOfParallelism.
It controls how many concurrent batches the MT plugin lets through to the MT provider. For memoQ-owned plugins, we configured this value based on thorough pre-translation tests (see the actual values in the memoQ-owned MT plugins section).
Provider-owned plugins have a MaxDegreeOfParallelism value of 1 until the MT providers review and update their plugins. This value is also saved in the corresponding MT settings resource (.mqres) file. If more MT providers are configured in a resource, each one can have different values.
The default MaxDegreeOfParallelism values in the .mqres file are provider suggestions. Users can change them for each MT settings resource - this makes sense if their subscription plans allow for higher throughput. Users with multiple subscriptions for an MT provider can set them up with different MaxDegreeOfParallelism values in different MT settings resources.
Locations of .mqres files:
- %PROGRAMDATA%\MemoQ\Resources\Local\MTSettings\ (local resources)
- %PROGRAMDATA%\MemoQ Server\Resources\Local\MTSettings\ (online resources on a server
- %PROGRAMDATA%\MemoQ\Resources\Remote\[server name]\MTSettings\ (local copies of online resources in checked-out online projects)
As memoQ TMS loads its resources at the start, you need to restart it if you made manual changes to MaxDegreeOfParallelism values in online resources.
Even if MaxDegreeOfParallelism is set to 1 for an MT plugin (or it is the default value because the MT provider hasn't updated the plugin yet), you can change it in the MT settings resource, and pre-translation will run in parallel:
Note: When an MT provider updates their plugin, released in a new memoQ version, installing the update won't affect previously created MT settings resources. The MaxDegreeOfParallelism value stays the same. However, the MT settings resources created with the new memoQ version will have the new default value. For more details, read the section on activating parallelism in MT-based pre-translation.
IMPORTANT: If the MT plugin can't handle parallel pre-translation, always keep this setting's value at 1.
If no MaxDegreeOfParallelism value exists in the .mqres file, the plugin will use its MT engine's default value.
How does it affect our clients and MT vendors?
The parallelism function implies risks to memoQ's stability, the health of MT services, and their memoQ integration.
This is why:
- memoQ users can use parallelism only through config files, there's no GUI for this,
- we are communicating these functions and the implied risks to MT providers,
- we allow MT providers to have some control over it: they can specify a MaxDegreeOfParallelism value in their respective MT plugins.
What happens to each MT plugin?
memoQ-owned MT plugins
For memoQ-developed and maintained MT plugins, we run thorough tests and calibrate reasonably good and stable performance that already multiplies the pre-translation performance of the given MT service in versions 10.6 and up.
As of memoQ 10.6.8 (2024.03.27), the MaxDegreeOfParallelism values for our MT plugins are:
Plugin | Value |
MemoQ.MicrosoftMTEx | 30 |
MemoQ.AmazonMT | 20 |
MemoQ.DeepLMT | 30 |
MemoQ.SystranMT | 10 |
MemoQ.GoogleAdvancedMT | 30 |
MemoQ.GoogleMT | 30 |
Provider-owned MT plugins
Each MT provider needs to check and update their plugins. We are contacting them and will provide help.
What should memoQ customers do?
To activate parallelism in MT-based pre-translation
If you install memoQ 10.6 or newer from scratch, everything will be already configured.
However, if you upgrade from an earlier version, you need to make manual changes:
- add the PreTranslate.MT.ParallelismLevel and PreTranslate.BatchSize keys to the three config files listed in the Control in memoQ section,
- add the MaxDegreeOfParallelism key to each MT settings resource as described in the Control in MT plugins section,
OR
- re-create your MT settings resources: resources created in memoQ 10.6 already contain the MaxDegreeOfParallelism key.
To experiment with MT-based pre-translation
After the configuration, you can optimize your MT pre-translation configuration (for each engine you use). Play around with all three parameters:
- PreTranslate.BatchSize
- PreTranslate.MT.ParallelismLevel
- MaxDegreeOfParallelism
Comments
0 comments
Article is closed for comments.